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/27 15:10:35 UTC

[jspwiki] 10/20: JSPWIKI-120: remove use of WikiEngine throughout the code as much as possible and use Engine instead (5)

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 f3005db149bbfa8c8c38f03eb3bddcbe286fa67e
Author: juanpablo <ju...@apache.org>
AuthorDate: Wed Feb 26 19:23:50 2020 +0100

    JSPWIKI-120: remove use of WikiEngine throughout the code as much as possible and use Engine instead (5)
---
 .../java/org/apache/wiki/ui/CommandResolver.java   |   4 +-
 .../org/apache/wiki/ui/DefaultCommandResolver.java |  15 +--
 .../java/org/apache/wiki/ui/EditorManager.java     |  35 +++---
 .../main/java/org/apache/wiki/ui/Installer.java    |  15 +--
 .../main/java/org/apache/wiki/ui/WikiCommand.java  |  18 +--
 .../java/org/apache/wiki/ui/WikiJSPFilter.java     |  30 +++--
 .../org/apache/wiki/ui/WikiRequestWrapper.java     |  10 +-
 .../java/org/apache/wiki/ui/WikiServletFilter.java |  22 ++--
 .../wiki/ui/admin/DefaultAdminBeanManager.java     | 135 ++++++++++-----------
 .../org/apache/wiki/ui/admin/SimpleAdminBean.java  |  74 +++++------
 .../org/apache/wiki/ui/admin/beans/ModuleBean.java |  11 +-
 11 files changed, 178 insertions(+), 191 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/CommandResolver.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/CommandResolver.java
index 350523f..c684b2a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/CommandResolver.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/CommandResolver.java
@@ -26,7 +26,7 @@ import java.util.Arrays;
 
 
 /**
- * <p>Resolves special pages, JSPs and Commands on behalf of a WikiEngine. CommandResolver will automatically resolve page names
+ * <p>Resolves special pages, JSPs and Commands on behalf of a Engine. CommandResolver will automatically resolve page names
  * with singular/plural variants. It can also detect the correct Command based on parameters supplied in an HTTP request, or due to the
  * JSP being accessed.</p>
  * <p>
@@ -36,7 +36,7 @@ import java.util.Arrays;
  * <p>For more complex lookups in which the caller supplies an HTTP request, {@link #findCommand(HttpServletRequest, String)} will
  * look up and return the correct Command. The String parameter <code>defaultContext</code> supplies the request context to use
  * if it cannot be detected. However, note that the default wiki context may be overridden if the request was for a "special page."</p>
- * <p>For example, suppose the WikiEngine's properties specify a special page called <code>UserPrefs</code> that redirects to
+ * <p>For example, suppose the Engine's properties specify a special page called <code>UserPrefs</code> that redirects to
  * <code>UserPreferences.jsp</code>. The ordinary lookup method {@linkplain #findCommand(String)} using a supplied context <code>view</code>
  * would return {@link PageCommand#VIEW}. But the {@linkplain #findCommand(HttpServletRequest, String)} method, when passed the same context
  * (<code>view</code>) and an HTTP request containing the page parameter value <code>UserPrefs</code>, will instead return
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java
index ce25685..1ee198e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java
@@ -20,13 +20,14 @@ package org.apache.wiki.ui;
 
 import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
-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.ProviderException;
 import org.apache.wiki.auth.GroupPrincipal;
 import org.apache.wiki.pages.PageManager;
 import org.apache.wiki.parser.MarkupParser;
+import org.apache.wiki.url.URLConstructor;
 import org.apache.wiki.util.TextUtil;
 
 import javax.servlet.http.HttpServletRequest;
@@ -62,7 +63,7 @@ public final class DefaultCommandResolver implements CommandResolver {
 
     private static final Logger LOG = Logger.getLogger( DefaultCommandResolver.class );
 
-    private final WikiEngine m_engine;
+    private final Engine m_engine;
 
     /** If true, we'll also consider english plurals (+s) a match. */
     private final boolean m_matchEnglishPlurals;
@@ -71,13 +72,13 @@ public final class DefaultCommandResolver implements CommandResolver {
     private final Map<String, Command> m_specialPages;
 
     /**
-     * Constructs a CommandResolver for a given WikiEngine. This constructor will extract the special page references for this wiki and
+     * Constructs a CommandResolver for a given Engine. This constructor will extract the special page references for this wiki and
      * store them in a cache used for resolution.
      *
      * @param engine the wiki engine
      * @param properties the properties used to initialize the wiki
      */
-    public DefaultCommandResolver( final WikiEngine engine, final Properties properties ) {
+    public DefaultCommandResolver( final Engine engine, final Properties properties ) {
         m_engine = engine;
         m_specialPages = new HashMap<>();
 
@@ -101,7 +102,7 @@ public final class DefaultCommandResolver implements CommandResolver {
         }
 
         // Do we match plurals?
-        m_matchEnglishPlurals = TextUtil.getBooleanProperty( properties, WikiEngine.PROP_MATCHPLURALS, true );
+        m_matchEnglishPlurals = TextUtil.getBooleanProperty( properties, Engine.PROP_MATCHPLURALS, true );
     }
 
     /**
@@ -214,7 +215,7 @@ public final class DefaultCommandResolver implements CommandResolver {
     public String getSpecialPageReference( final String page ) {
         final Command command = m_specialPages.get( page );
         if ( command != null ) {
-            return m_engine.getURLConstructor().makeURL( command.getRequestContext(), command.getURLPattern(), null );
+            return m_engine.getManager( URLConstructor.class ).makeURL( command.getRequestContext(), command.getURLPattern(), null );
         }
 
         return null;
@@ -266,7 +267,7 @@ public final class DefaultCommandResolver implements CommandResolver {
     public String extractPageFromParameter( final String requestContext, final HttpServletRequest request ) {
         // Extract the page name from the URL directly
         try {
-            String page = m_engine.getURLConstructor().parsePage( requestContext, request, m_engine.getContentEncoding() );
+            String page = m_engine.getManager( URLConstructor.class ).parsePage( requestContext, request, m_engine.getContentEncoding() );
             if ( page != null ) {
                 try {
                     // Look for singular/plural variants; if one not found, take the one the user supplied
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/EditorManager.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/EditorManager.java
index 0d2f5f3..9d173fd 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/EditorManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/EditorManager.java
@@ -20,7 +20,7 @@ package org.apache.wiki.ui;
 
 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.NoSuchVariableException;
 import org.apache.wiki.modules.ModuleManager;
 import org.apache.wiki.modules.WikiModuleInfo;
@@ -39,21 +39,19 @@ import java.util.Set;
 
 
 /**
- *  Defines an editor manager.  An editor can be added by adding a
- *  suitable JSP file under templates/default/editors
- *  If you want your editor to include any scripts or something, you
- *  can simply request it by adding the following in your
- *  ini/jspwiki_module.xml:
+ *  Defines an editor manager.  An editor can be added by adding a suitable JSP file under templates/default/editors
+ *  If you want your editor to include any scripts or something, you can simply request it by adding the following in your
+ *  {@code ini/jspwiki_module.xml}:
  *
  *  <pre>
- *  <modules>
- *   <editor name="myeditor">
- *       <author>Janne Jalkanen</author>
- *       <script>foo.js</script>
- *       <stylesheet>foo.css</stylesheet>
- *       <path>editors/myeditor.jsp</path>
- *   </editor>
- *  </modules>
+ *  &lt;modules>
+ *   &lt;editor name="myeditor">
+ *       &lt;author>Janne Jalkanen&lt;/author>
+ *       &lt;script>foo.js&lt;/script>
+ *       &lt;stylesheet>foo.css&lt;/stylesheet>
+ *       &lt;path>editors/myeditor.jsp&lt;/path>
+ *   &lt;/editor>
+ *  &lt;/modules>
  *  </pre>
  *
  *  @since 2.4
@@ -82,7 +80,7 @@ public class EditorManager extends ModuleManager {
 
     private static final Logger log = Logger.getLogger( EditorManager.class );
 
-    public EditorManager( final WikiEngine engine ) {
+    public EditorManager( final Engine engine ) {
         super( engine );
     }
 
@@ -96,9 +94,7 @@ public class EditorManager extends ModuleManager {
     }
 
     /**
-     *  This method goes through the jspwiki_module.xml files and hunts for editors.
-     *  Any editors found are put in the registry.
-     *
+     *  This method goes through the jspwiki_module.xml files and hunts for editors. Any editors found are put in the registry.
      */
     private void registerEditors() {
         log.info( "Registering editor modules" );
@@ -225,7 +221,8 @@ public class EditorManager extends ModuleManager {
             return info;
         }
 
-        @Override protected void initializeFromXML( final Element el ) {
+        @Override
+        protected void initializeFromXML( final Element el ) {
             super.initializeFromXML( el );
             m_path = el.getChildText("path");
         }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/Installer.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/Installer.java
index 243a67b..cad8a35 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/Installer.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/Installer.java
@@ -20,6 +20,7 @@ package org.apache.wiki.ui;
 
 import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiSession;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.auth.NoSuchPrincipalException;
 import org.apache.wiki.auth.UserManager;
 import org.apache.wiki.auth.WikiPrincipal;
@@ -58,17 +59,17 @@ public class Installer {
     public static final String INSTALL_INFO = "Installer.Info";
     public static final String INSTALL_ERROR = "Installer.Error";
     public static final String INSTALL_WARNING = "Installer.Warning";
-    public static final String APP_NAME = WikiEngine.PROP_APPNAME;
+    public static final String APP_NAME = Engine.PROP_APPNAME;
     public static final String STORAGE_DIR = BasicAttachmentProvider.PROP_STORAGEDIR;
     public static final String PAGE_DIR = FileSystemProvider.PROP_PAGEDIR;
-    public static final String WORK_DIR = WikiEngine.PROP_WORKDIR;
+    public static final String WORK_DIR = Engine.PROP_WORKDIR;
     public static final String ADMIN_GROUP = "Admin";
     public static final String PROPFILENAME = "jspwiki-custom.properties" ;
     public static final String TMP_DIR = System.getProperty("java.io.tmpdir");
     private final WikiSession m_session;
     private final File m_propertyFile;
     private final Properties m_props;
-    private final WikiEngine m_engine;
+    private final Engine m_engine;
     private HttpServletRequest m_request;
     private boolean m_validated;
     
@@ -93,7 +94,7 @@ public class Installer {
      */
     public boolean adminExists() {
         // See if the admin user exists already
-        final UserManager userMgr = m_engine.getUserManager();
+        final UserManager userMgr = m_engine.getManager( UserManager.class );
         final UserDatabase userDb = userMgr.getUserDatabase();
         try {
             userDb.findByLoginName( ADMIN_ID );
@@ -118,7 +119,7 @@ public class Installer {
         }
         
         // See if the admin user exists already
-        final UserManager userMgr = m_engine.getUserManager();
+        final UserManager userMgr = m_engine.getManager( UserManager.class );
         final UserDatabase userDb = userMgr.getUserDatabase();
         String password = null;
         
@@ -135,7 +136,7 @@ public class Installer {
         }
         
         // Create a new admin group
-        final GroupManager groupMgr = m_engine.getGroupManager();
+        final GroupManager groupMgr = m_engine.getManager( GroupManager.class );
         Group group;
         try {
             group = groupMgr.getGroup( ADMIN_GROUP );
@@ -166,7 +167,7 @@ public class Installer {
     }
 
     /**
-     * Returns a property from the WikiEngine's properties.
+     * Returns a property from the Engine's properties.
      * @param key the property key
      * @return the property value
      */
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiCommand.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiCommand.java
index 1f22b44..1d81475 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiCommand.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiCommand.java
@@ -27,7 +27,7 @@ import java.security.Permission;
  * <p>Defines Commands for wiki-wide operations such as creating groups, editing preferences and profiles, and logging in/out.
  * WikiCommands can be combined with Strings (representing the name of a wiki instance) to produce targeted Commands.</p>
  *
- * @see org.apache.wiki.WikiEngine#getApplicationName()
+ * @see org.apache.wiki.api.core.Engine#getApplicationName()
  * @since 2.4.22
  */
 public final class WikiCommand extends AbstractCommand {
@@ -91,11 +91,13 @@ public final class WikiCommand extends AbstractCommand {
     }
 
     /**
-     *  Constructs an admin command.
+     * Constructs an admin command.
      *  
-     *  @param requestContext
-     *  @param urlPattern
-     *  @param contentTemplate
+     * @param requestContext the request context
+     * @param urlPattern the URL pattern
+     * @param contentTemplate the content template; may be <code>null</code>
+     * @param target the target of the command, such as a WikiPage; may be <code>null</code>
+     * @throws IllegalArgumentException if the request content or URL pattern is <code>null</code>
      */
     private WikiCommand( final String requestContext, final String urlPattern, final String contentTemplate, final String target ) {
         super( requestContext, urlPattern, contentTemplate, target );
@@ -111,7 +113,7 @@ public final class WikiCommand extends AbstractCommand {
      * @return the new targeted command
      * @throws IllegalArgumentException if the target is not of the correct type
      */
-    public Command targetedCommand( final Object target ) {
+    @Override public Command targetedCommand( final Object target ) {
         if ( !( target instanceof String ) ) {
             throw new IllegalArgumentException( "Target must non-null and of type String." );
         }
@@ -123,14 +125,14 @@ public final class WikiCommand extends AbstractCommand {
      *
      * @see org.apache.wiki.ui.Command#getName()
      */
-    public String getName() {
+    @Override public String getName() {
         return getJSPFriendlyName();
     }
 
     /**
      * @see org.apache.wiki.ui.Command#requiredPermission()
      */
-    public Permission requiredPermission() {
+    @Override public Permission requiredPermission() {
         return m_permission;
     }
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java
index 03e16cd..3924000 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java
@@ -23,7 +23,7 @@ import org.apache.log4j.Logger;
 import org.apache.log4j.NDC;
 import org.apache.wiki.WatchDog;
 import org.apache.wiki.WikiContext;
-import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.event.WikiEventManager;
 import org.apache.wiki.event.WikiPageEvent;
 import org.apache.wiki.url.DefaultURLConstructor;
@@ -77,14 +77,16 @@ public class WikiJSPFilter extends WikiServletFilter {
     private boolean useEncoding;
 
     /** {@inheritDoc} */
-    @Override public void init( final FilterConfig config ) throws ServletException {
+    @Override
+    public void init( final FilterConfig config ) throws ServletException {
         super.init( config );
-        m_wiki_encoding = m_engine.getWikiProperties().getProperty(WikiEngine.PROP_ENCODING);
+        m_wiki_encoding = m_engine.getWikiProperties().getProperty( Engine.PROP_ENCODING );
 
-        useEncoding = !( Boolean.valueOf( m_engine.getWikiProperties().getProperty( WikiEngine.PROP_NO_FILTER_ENCODING, "false" ).trim() ).booleanValue() );
+        useEncoding = !Boolean.parseBoolean( m_engine.getWikiProperties().getProperty( Engine.PROP_NO_FILTER_ENCODING, "false" ).trim() );
     }
 
-    @Override public void doFilter( final ServletRequest  request, final ServletResponse response, final FilterChain chain ) throws ServletException, IOException {
+    @Override
+    public void doFilter( final ServletRequest  request, final ServletResponse response, final FilterChain chain ) throws ServletException, IOException {
         final WatchDog w = WatchDog.getCurrentWatchDog( m_engine );
         try {
             NDC.push( m_engine.getApplicationName()+":"+((HttpServletRequest)request).getRequestURI() );
@@ -226,18 +228,19 @@ public class WikiJSPFilter extends WikiServletFilter {
             m_response = r;
         }
 
-        /**
-         *  Returns a writer for output; this wraps the internal buffer into a PrintWriter.
-         */
-        @Override public PrintWriter getWriter() {
+        /** Returns a writer for output; this wraps the internal buffer into a PrintWriter. */
+        @Override
+        public PrintWriter getWriter() {
             return m_writer;
         }
 
-        @Override public ServletOutputStream getOutputStream() {
+        @Override
+        public ServletOutputStream getOutputStream() {
             return m_servletOut;
         }
 
-        @Override public void flushBuffer() throws IOException {
+        @Override
+        public void flushBuffer() throws IOException {
             m_writer.flush();
             super.flushBuffer();
         }
@@ -272,7 +275,8 @@ public class WikiJSPFilter extends WikiServletFilter {
         }
 
         /** Returns whatever was written so far into the Writer. */
-        @Override public String toString() {
+        @Override
+        public String toString() {
             try {
 				flushBuffer();
 			} catch( final IOException e ) {
@@ -298,7 +302,7 @@ public class WikiJSPFilter extends WikiServletFilter {
 
     /**
      *  Fires a WikiPageEvent of the provided type and page name
-     *  to all registered listeners of the current WikiEngine.
+     *  to all registered listeners of the current Engine.
      *
      * @see org.apache.wiki.event.WikiPageEvent
      * @param type       the event type to be fired
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiRequestWrapper.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiRequestWrapper.java
index a0a9f48..5abfd26 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiRequestWrapper.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiRequestWrapper.java
@@ -18,8 +18,8 @@
  */
 package org.apache.wiki.ui;
 
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiSession;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.auth.SessionMonitor;
 import org.apache.wiki.auth.authorize.Role;
 
@@ -43,7 +43,7 @@ public class WikiRequestWrapper extends HttpServletRequestWrapper {
      * @param engine the wiki engine
      * @param request the request to wrap
      */
-    public WikiRequestWrapper( final WikiEngine engine, final HttpServletRequest request ) {
+    public WikiRequestWrapper( final Engine engine, final HttpServletRequest request ) {
         super( request );
 
         // Get and stash a reference to the current WikiSession
@@ -56,7 +56,7 @@ public class WikiRequestWrapper extends HttpServletRequestWrapper {
      * WikiSession is an authenticated session (that is, {@link WikiSession#isAuthenticated()} returns <code>true</code>,
      * this method returns the name of the principal returned by {@link WikiSession#getLoginPrincipal()}.
      */
-    public String getRemoteUser() {
+    @Override public String getRemoteUser() {
         if( super.getRemoteUser() != null ) {
             return super.getRemoteUser();
         }
@@ -73,7 +73,7 @@ public class WikiRequestWrapper extends HttpServletRequestWrapper {
      * WikiSession is an authenticated session (that is, {@link WikiSession#isAuthenticated()} returns
      * <code>true</code>, this method returns the value of {@link WikiSession#getLoginPrincipal()}.
      */
-    public Principal getUserPrincipal() {
+    @Override public Principal getUserPrincipal() {
         if( super.getUserPrincipal() != null ) {
             return super.getUserPrincipal();
         }
@@ -90,7 +90,7 @@ public class WikiRequestWrapper extends HttpServletRequestWrapper {
      * this method iterates through the built-in Role objects (<em>e.g.</em>, ANONYMOUS, ASSERTED, AUTHENTICATED) returned by
      * {@link WikiSession#getRoles()} and checks to see if any of these principals' names match the supplied role.
      */
-    public boolean isUserInRole( final String role ) {
+    @Override public boolean isUserInRole( final String role ) {
         final boolean hasContainerRole = super.isUserInRole(role);
         if( hasContainerRole ) {
             return true;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java
index 33c9454..39ff442 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java
@@ -23,6 +23,8 @@ import org.apache.log4j.NDC;
 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.auth.AuthenticationManager;
 import org.apache.wiki.auth.SessionMonitor;
 import org.apache.wiki.auth.WikiSecurityException;
 
@@ -39,7 +41,7 @@ import java.io.IOException;
 import java.io.PrintWriter;
 
 /**
- * Filter that verifies that the {@link org.apache.wiki.WikiEngine} is running, and sets the authentication status for the user's
+ * Filter that verifies that the {@link org.apache.wiki.api.core.Engine} is running, and sets the authentication status for the user's
  * WikiSession. Each HTTP request processed by this filter is wrapped by a {@link WikiRequestWrapper}. The wrapper's primary responsibility
  * is to return the correct <code>userPrincipal</code> and <code>remoteUser</code> for authenticated JSPWiki users (whether authenticated
  * by container or by JSPWiki's custom system). The wrapper's other responsibility is to incorporate JSPWiki built-in roles
@@ -50,7 +52,7 @@ import java.io.PrintWriter;
 public class WikiServletFilter implements Filter {
 
     private static final Logger log = Logger.getLogger( WikiServletFilter.class );
-    protected WikiEngine m_engine = null;
+    protected Engine m_engine = null;
 
     /**
      *  Creates a Wiki Servlet Filter.
@@ -64,14 +66,14 @@ public class WikiServletFilter implements Filter {
      * Initializes the WikiServletFilter.
      * 
      * @param config The FilterConfig.
-     * @throws ServletException If a WikiEngine cannot be started.
+     * @throws ServletException If a Engine cannot be started.
      */
-    public void init( final FilterConfig config ) throws ServletException {
+    @Override public void init( final FilterConfig config ) throws ServletException {
         final ServletContext context = config.getServletContext();
 
         // TODO REMOVEME when resolving JSPWIKI-129
         if( System.getSecurityManager() != null ) {
-            context.log( "== JSPWIKI WARNING ==   : This container is running with a security manager. JSPWiki does not yet really support that right now. See issue JSPWIKI-129 for details and information on how to proceed." );
+            context.log( "== JSPWIKI WARNING ==  : This container is running with a security manager. JSPWiki does not yet really support that right now. See issue JSPWIKI-129 for details and information on how to proceed." );
         }
 
         m_engine = WikiEngine.getInstance( context, null );
@@ -80,11 +82,11 @@ public class WikiServletFilter implements Filter {
     /**
      * Destroys the WikiServletFilter.
      */
-    public void destroy() {
+    @Override public void destroy() {
     }
 
     /**
-    * Checks that the WikiEngine is running ok, wraps the current HTTP request, and sets the correct authentication state for the users's
+    * Checks that the Engine is running ok, wraps the current HTTP request, and sets the correct authentication state for the users's
     * WikiSession. First, the method {@link org.apache.wiki.auth.AuthenticationManager#login(HttpServletRequest)}
     * executes, which sets the authentication state. Then, the request is wrapped with a
     * {@link WikiRequestWrapper}.
@@ -94,7 +96,7 @@ public class WikiServletFilter implements Filter {
     * @throws ServletException if {@link org.apache.wiki.auth.AuthenticationManager#login(HttpServletRequest)} fails for any reason
     * @throws IOException If writing to the servlet response fails. 
     */
-    public void doFilter( final ServletRequest request, final ServletResponse response, final FilterChain chain ) throws IOException, ServletException {
+    @Override public void doFilter( final ServletRequest request, final ServletResponse response, final FilterChain chain ) throws IOException, ServletException {
         //  Sanity check; it might be true in some conditions, but we need to know where.
         if( chain == null ) {
             throw new ServletException("FilterChain is null, even if it should not be.  Please report this to the jspwiki development team.");
@@ -125,7 +127,7 @@ public class WikiServletFilter implements Filter {
         if ( !isWrapped( request ) ) {
             // Prepare the WikiSession
             try {
-                m_engine.getAuthenticationManager().login( httpRequest );
+                m_engine.getManager( AuthenticationManager.class ).login( httpRequest );
                 final WikiSession wikiSession = SessionMonitor.getInstance( m_engine ).find( httpRequest.getSession() );
                 httpRequest = new WikiRequestWrapper( m_engine, httpRequest );
                 if ( log.isDebugEnabled() ) {
@@ -137,7 +139,7 @@ public class WikiServletFilter implements Filter {
         }
 
         try {
-            NDC.push( m_engine.getApplicationName()+":"+httpRequest.getRequestURL() );
+            NDC.push( m_engine.getApplicationName() + ":" + httpRequest.getRequestURL() );
             chain.doFilter( httpRequest, response );
         } finally {
             NDC.pop();
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/DefaultAdminBeanManager.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/DefaultAdminBeanManager.java
index ff94ccc..8fc3500 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/DefaultAdminBeanManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/DefaultAdminBeanManager.java
@@ -18,35 +18,36 @@
  */
 package org.apache.wiki.ui.admin;
 
-import java.lang.management.ManagementFactory;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.management.DynamicMBean;
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanRegistrationException;
-import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
-import javax.management.NotCompliantMBeanException;
-import javax.management.ObjectName;
-
 import org.apache.log4j.Logger;
 import org.apache.wiki.Release;
-import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.engine.AdminBeanManager;
+import org.apache.wiki.api.engine.FilterManager;
+import org.apache.wiki.api.engine.PluginManager;
 import org.apache.wiki.event.WikiEngineEvent;
 import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.modules.WikiModuleInfo;
+import org.apache.wiki.ui.EditorManager;
 import org.apache.wiki.ui.admin.beans.CoreBean;
 import org.apache.wiki.ui.admin.beans.FilterBean;
 import org.apache.wiki.ui.admin.beans.PluginBean;
 import org.apache.wiki.ui.admin.beans.SearchManagerBean;
 import org.apache.wiki.ui.admin.beans.UserBean;
 
+import javax.management.DynamicMBean;
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanRegistrationException;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.NotCompliantMBeanException;
+import javax.management.ObjectName;
+import java.lang.management.ManagementFactory;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
 
 /**
  *  Provides a manager class for all AdminBeans within JSPWiki.  This class also manages registration for any
@@ -56,14 +57,13 @@ import org.apache.wiki.ui.admin.beans.UserBean;
  */
 public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanManager {
 
-    private WikiEngine m_engine;
+    private Engine m_engine;
     private ArrayList< AdminBean >  m_allBeans;
+    private MBeanServer m_mbeanServer;
 
-    private MBeanServer m_mbeanServer = null;
+    private static final Logger log = Logger.getLogger(DefaultAdminBeanManager.class);
 
-    private static Logger log = Logger.getLogger(DefaultAdminBeanManager.class);
-
-    public DefaultAdminBeanManager( WikiEngine engine ) {
+    public DefaultAdminBeanManager( final Engine engine ) {
         log.info("Using JDK 1.5 Platform MBeanServer");
         m_mbeanServer = MBeanServerFactory15.getServer();
 
@@ -86,7 +86,7 @@ public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanMana
         reload();
     }
 
-    private String getJMXTitleString( int title ) {
+    private String getJMXTitleString( final int title ) {
         switch( title ) {
             case AdminBean.CORE:
                 return "Core";
@@ -102,15 +102,14 @@ public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanMana
 
 
     /**
-     *  Register an AdminBean.  If the AdminBean is also a JMX MBean, it also gets registered to the MBeanServer
-     *  we've found.
+     *  Register an AdminBean.  If the AdminBean is also a JMX MBean, it also gets registered to the MBeanServer we've found.
      *
      *  @param ab AdminBean to register.
      */
-    private void registerAdminBean( AdminBean ab ) {
+    private void registerAdminBean( final AdminBean ab ) {
         try {
             if( ab instanceof DynamicMBean && m_mbeanServer != null ) {
-                ObjectName name = getObjectName( ab );
+                final ObjectName name = getObjectName( ab );
 
                 if( !m_mbeanServer.isRegistered( name ) ) {
                     m_mbeanServer.registerMBean( ab, name );
@@ -120,25 +119,23 @@ public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanMana
             m_allBeans.add( ab );
 
             log.info("Registered new admin bean "+ab.getTitle());
-        } catch( InstanceAlreadyExistsException e ) {
+        } catch( final InstanceAlreadyExistsException e ) {
             log.error("Admin bean already registered to JMX",e);
-        } catch( MBeanRegistrationException e ) {
+        } catch( final MBeanRegistrationException e ) {
             log.error("Admin bean cannot be registered to JMX",e);
-        } catch( NotCompliantMBeanException e ) {
+        } catch( final NotCompliantMBeanException e ) {
             log.error("Your admin bean is not very good",e);
-        } catch( MalformedObjectNameException e ) {
+        } catch( final MalformedObjectNameException e ) {
             log.error("Your admin bean name is not very good",e);
-        } catch( NullPointerException e ) {
+        } catch( final NullPointerException e ) {
             log.error("Evil NPE occurred",e);
         }
     }
 
-    private ObjectName getObjectName(AdminBean ab) throws MalformedObjectNameException {
-        String component = getJMXTitleString( ab.getType() );
-        String title     = ab.getTitle();
-
-        ObjectName name = new ObjectName( Release.APPNAME + ":component="+component+",name="+title );
-        return name;
+    private ObjectName getObjectName( final AdminBean ab ) throws MalformedObjectNameException {
+        final String component = getJMXTitleString( ab.getType() );
+        final String title     = ab.getTitle();
+        return new ObjectName( Release.APPNAME + ":component="+component+",name="+title );
     }
 
     /**
@@ -147,21 +144,16 @@ public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanMana
      *
      *  @param c Collection of WikiModuleInfo instances
      */
-    private void registerBeans( Collection< WikiModuleInfo > c ) {
-        for( Iterator< WikiModuleInfo > i = c.iterator(); i.hasNext(); ) {
-            String abname = i.next().getAdminBeanClass();
-
+    private void registerBeans( final Collection< WikiModuleInfo > c ) {
+        for( final WikiModuleInfo wikiModuleInfo : c ) {
+            final String abname = wikiModuleInfo.getAdminBeanClass();
             try {
                 if( abname != null && abname.length() > 0 ) {
-                    Class< ? > abclass = Class.forName( abname );
-                    AdminBean ab = ( AdminBean ) abclass.newInstance();
+                    final Class< ? > abclass = Class.forName( abname );
+                    final AdminBean ab = ( AdminBean )abclass.newInstance();
                     registerAdminBean( ab );
                 }
-            } catch (ClassNotFoundException e) {
-                log.error( e.getMessage(), e );
-            } catch (InstantiationException e) {
-                log.error( e.getMessage(), e );
-            } catch (IllegalAccessException e) {
+            } catch( final ClassNotFoundException | InstantiationException | IllegalAccessException e ) {
                 log.error( e.getMessage(), e );
             }
         }
@@ -170,7 +162,7 @@ public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanMana
 
     // FIXME: Should unload the beans first.
     private void reload() {
-        m_allBeans = new ArrayList<AdminBean>();
+        m_allBeans = new ArrayList<>();
 
         try {
             registerAdminBean( new CoreBean( m_engine ) );
@@ -178,12 +170,12 @@ public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanMana
             registerAdminBean( new SearchManagerBean( m_engine ) );
             registerAdminBean( new PluginBean( m_engine ) );
             registerAdminBean( new FilterBean( m_engine ) );
-        } catch( NotCompliantMBeanException e ) {
+        } catch( final NotCompliantMBeanException e ) {
             log.error( e.getMessage(), e );
         }
-        registerBeans( m_engine.getEditorManager().modules() );
-        registerBeans( m_engine.getPluginManager().modules() );
-        registerBeans( m_engine.getFilterManager().modules() );
+        registerBeans( m_engine.getManager( EditorManager.class ).modules() );
+        registerBeans( m_engine.getManager( PluginManager.class ).modules() );
+        registerBeans( m_engine.getManager( FilterManager.class ).modules() );
     }
 
     /* (non-Javadoc)
@@ -202,12 +194,10 @@ public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanMana
 	 * @see org.apache.wiki.ui.admin.AdminBeanManager#findBean(java.lang.String)
 	 */
     @Override
-	public AdminBean findBean( String id ) {
-        for( Iterator< AdminBean > i = m_allBeans.iterator(); i.hasNext(); ) {
-            AdminBean ab = i.next();
-
-            if( ab.getId().equals(id) ) {
-            	return ab;
+	public AdminBean findBean( final String id ) {
+        for( final AdminBean ab : m_allBeans ) {
+            if( ab.getId().equals( id ) ) {
+                return ab;
             }
         }
 
@@ -234,7 +224,7 @@ public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanMana
      *  @return A type value.
      */
     @Override
-	public int getTypeFromString( String type ) {
+	public int getTypeFromString( final String type ) {
         if( "core".equals( type ) ) {
             return AdminBean.CORE;
         } else if( "editors".equals( type ) ) {
@@ -248,23 +238,22 @@ public class DefaultAdminBeanManager implements WikiEventListener, AdminBeanMana
 	 * @see org.apache.wiki.ui.admin.AdminBeanManager#actionPerformed(org.apache.wiki.event.WikiEvent)
 	 */
     @Override
-	public void actionPerformed(WikiEvent event) {
+	public void actionPerformed( final WikiEvent event ) {
         if( event instanceof WikiEngineEvent ) {
-            if( ( ( WikiEngineEvent )event ).getType() == WikiEngineEvent.SHUTDOWN ) {
-                for( Iterator< AdminBean > i = m_allBeans.iterator(); i.hasNext(); ) {
+            if( event.getType() == WikiEngineEvent.SHUTDOWN ) {
+                for( final AdminBean m_allBean : m_allBeans ) {
                     try {
-                        AdminBean ab = i.next();
-                        ObjectName on = getObjectName( ab );
+                        final ObjectName on = getObjectName( m_allBean );
                         if( m_mbeanServer.isRegistered( on ) ) {
-                            m_mbeanServer.unregisterMBean(on);
-                            log.info("Unregistered AdminBean "+ab.getTitle());
+                            m_mbeanServer.unregisterMBean( on );
+                            log.info( "Unregistered AdminBean " + m_allBean.getTitle() );
                         }
-                    } catch( MalformedObjectNameException e ) {
-                        log.error("Malformed object name when unregistering",e);
-                    } catch (InstanceNotFoundException e) {
-                        log.error("Object was registered; yet claims that it's not there",e);
-                    } catch (MBeanRegistrationException e) {
-                        log.error("Registration exception while unregistering",e);
+                    } catch( final MalformedObjectNameException e ) {
+                        log.error( "Malformed object name when unregistering", e );
+                    } catch( final InstanceNotFoundException e ) {
+                        log.error( "Object was registered; yet claims that it's not there", e );
+                    } catch( final MBeanRegistrationException e ) {
+                        log.error( "Registration exception while unregistering", e );
                     }
                 }
             }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/SimpleAdminBean.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/SimpleAdminBean.java
index b1e0ed5..95faf07 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/SimpleAdminBean.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/SimpleAdminBean.java
@@ -35,12 +35,9 @@ import javax.management.NotCompliantMBeanException;
  *  
  *  @since 2.5.52
  */
-public abstract class SimpleAdminBean extends SimpleMBean implements AdminBean
-{
-    /**
-     *  Provides access to a WikiEngine instance to which this AdminBean
-     *  belongs to.
-     */
+public abstract class SimpleAdminBean extends SimpleMBean implements AdminBean {
+
+    /** Provides access to a Engine instance to which this AdminBean belongs to. */
     protected Engine m_engine;
     
     /**
@@ -48,15 +45,15 @@ public abstract class SimpleAdminBean extends SimpleMBean implements AdminBean
      *  
      *  @throws NotCompliantMBeanException
      */
-    protected SimpleAdminBean() throws NotCompliantMBeanException
-    {
+    protected SimpleAdminBean() throws NotCompliantMBeanException {
         super();
     }
     
     /**
-     *  Initialize the AdminBean by setting up a WikiEngine instance internally.
+     *  Initialize the AdminBean by setting up a Engine instance internally.
      */
-    @Override public void initialize( final Engine engine )
+    @Override
+    public void initialize( final Engine engine )
     {
         m_engine = engine;
     }
@@ -67,38 +64,31 @@ public abstract class SimpleAdminBean extends SimpleMBean implements AdminBean
      *  attribute is read-only, a readonly input widget is created.
      *  The value is determined by the toString() method of the attribute.
      */
-    @Override public String doGet( final WikiContext context)
-    {
+    @Override
+    public String doGet( final WikiContext context ) {
         final MBeanInfo info = getMBeanInfo();
         final MBeanAttributeInfo[] attributes = info.getAttributes();
         final StringBuilder sb = new StringBuilder();
-        
-        for( int i = 0; i < attributes.length; i++ )
-        {
-            sb.append("<div class='block'>\n");
-            
-            sb.append( "<label>"+StringUtils.capitalize( attributes[i].getName() )+"</label>\n");
-            
-            try
-            {
-                final Object value = getAttribute( attributes[i].getName() );
-                if( attributes[i].isWritable() )
-                {
-                    sb.append( "<input type='text' name='question' size='30' value='"+value+"' />\n" );
-                }
-                else
-                {
-                    sb.append( "<input type='text' class='readonly' readonly='true' size='30' value='"+value+"' />\n" );
+
+        for( int i = 0; i < attributes.length; i++ ) {
+            sb.append( "<div class='block'>\n" );
+
+            sb.append( "<label>" + StringUtils.capitalize( attributes[ i ].getName() ) + "</label>\n" );
+
+            try {
+                final Object value = getAttribute( attributes[ i ].getName() );
+                if( attributes[ i ].isWritable() ) {
+                    sb.append( "<input type='text' name='question' size='30' value='" + value + "' />\n" );
+                } else {
+                    sb.append( "<input type='text' class='readonly' readonly='true' size='30' value='" + value + "' />\n" );
                 }
-            }
-            catch( final Exception e )
-            {
-                sb.append("Exception: "+e.getMessage());
+            } catch( final Exception e ) {
+                sb.append( "Exception: " + e.getMessage() );
             }
 
-            sb.append( "<div class='description'>"+attributes[i].getDescription()+"</div>\n");
-            
-            sb.append("</div>\n");
+            sb.append( "<div class='description'>" + attributes[ i ].getDescription() + "</div>\n" );
+
+            sb.append( "</div>\n" );
         }
         return sb.toString();
     }
@@ -106,18 +96,18 @@ public abstract class SimpleAdminBean extends SimpleMBean implements AdminBean
     /**
      *  Not implemented yet.
      */
-    @Override public String doPost( final WikiContext context)
-    {
-        // TODO Auto-generated method stub
+    @Override
+    public String doPost( final WikiContext context) {
         return null;
     }
 
     /**
-     *  By default, this method returns the class name of the bean.  This is
-     *  suitable, if you have a singleton bean.
+     *  By default, this method returns the class name of the bean.  This is suitable, if you have a singleton bean.
      */
-    @Override public String getId()
+    @Override
+    public String getId()
     {
         return getClass().getName();
     }
+
 }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/beans/ModuleBean.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/beans/ModuleBean.java
index aa84a5f..228e50a 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/beans/ModuleBean.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/admin/beans/ModuleBean.java
@@ -33,8 +33,6 @@ import java.util.Collection;
 
 public abstract class ModuleBean extends SimpleAdminBean {
 
-    //protected WikiEngine m_engine; //inherited protected field from SimpleAdminBean
-
     private static final String VER_WARNING = "<span class='warning'>This module is not compatible with this version of JSPWiki.</span>";
 
     public ModuleBean( final Engine engine ) throws NotCompliantMBeanException {
@@ -44,21 +42,24 @@ public abstract class ModuleBean extends SimpleAdminBean {
     /**
      * {@inheritDoc}
      */
-    @Override public String[] getAttributeNames() {
+    @Override
+    public String[] getAttributeNames() {
         return new String[0];
     }
 
     /**
      * {@inheritDoc}
      */
-    @Override public String[] getMethodNames() {
+    @Override
+    public String[] getMethodNames() {
         return new String[0];
     }
 
     /**
      * {@inheritDoc}
      */
-    @Override public String doGet( final WikiContext context ) {
+    @Override
+    public String doGet( final WikiContext context ) {
         final Collection< WikiModuleInfo > filters = modules();
         final Element root = title();
         final Element tb = containerForModuleDetail( root );