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:05 UTC

[jspwiki] 23/38: JSPWIKI-120: make callback handlers use Engine instead of WikiEngine

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 db20d0e9baf513236e0832b9218c2f68b0b37c72
Author: juanpablo <ju...@apache.org>
AuthorDate: Fri Feb 21 17:31:22 2020 +0100

    JSPWIKI-120: make callback handlers use Engine instead of WikiEngine
---
 .../wiki/attachment/DefaultAttachmentManager.java  |  3 +-
 .../wiki/auth/DefaultAuthenticationManager.java    | 11 ++-
 .../auth/login/WebContainerCallbackHandler.java    | 50 ++++++--------
 .../wiki/auth/login/WikiCallbackHandler.java       | 78 +++++++++-------------
 .../apache/wiki/auth/login/WikiEngineCallback.java | 25 ++++---
 5 files changed, 71 insertions(+), 96 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/attachment/DefaultAttachmentManager.java b/jspwiki-main/src/main/java/org/apache/wiki/attachment/DefaultAttachmentManager.java
index 688c3e0..4cf397c 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/attachment/DefaultAttachmentManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/attachment/DefaultAttachmentManager.java
@@ -23,7 +23,6 @@ import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Element;
 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.NoRequiredPropertyException;
@@ -106,7 +105,7 @@ public class DefaultAttachmentManager implements AttachmentManager {
             final Class< ? > providerclass = ClassUtil.findClass( "org.apache.wiki.providers", classname );
 
             m_provider = ( WikiAttachmentProvider )providerclass.newInstance();
-            m_provider.initialize( m_engine.adapt( WikiEngine.class ), props );
+            m_provider.initialize( m_engine, props );
         } catch( final ClassNotFoundException e ) {
             log.error( "Attachment provider class not found",e);
         } catch( final InstantiationException e ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthenticationManager.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthenticationManager.java
index e4566b9..ce76804 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthenticationManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/DefaultAuthenticationManager.java
@@ -19,7 +19,6 @@
 package org.apache.wiki.auth;
 
 import org.apache.log4j.Logger;
-import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.core.Engine;
 import org.apache.wiki.api.exceptions.WikiException;
@@ -154,7 +153,7 @@ public class DefaultAuthenticationManager implements AuthenticationManager {
     @Override
     public boolean login( final HttpServletRequest request ) throws WikiSecurityException {
         final HttpSession httpSession = request.getSession();
-        final WikiSession session = SessionMonitor.getInstance( m_engine.adapt( WikiEngine.class ) ).find( httpSession );
+        final WikiSession session = SessionMonitor.getInstance( m_engine ).find( httpSession );
         final AuthenticationManager authenticationMgr = m_engine.getManager( AuthenticationManager.class );
         final AuthorizationManager authorizationMgr = m_engine.getManager( AuthorizationManager.class );
         CallbackHandler handler = null;
@@ -163,7 +162,7 @@ public class DefaultAuthenticationManager implements AuthenticationManager {
         // If user not authenticated, check if container logged them in, or if there's an authentication cookie
         if ( !session.isAuthenticated() ) {
             // Create a callback handler
-            handler = new WebContainerCallbackHandler( m_engine.adapt( WikiEngine.class ), request );
+            handler = new WebContainerCallbackHandler( m_engine, request );
 
             // Execute the container login module, then (if that fails) the cookie auth module
             Set< Principal > principals = authenticationMgr.doJAASLogin( WebContainerLoginModule.class, handler, options );
@@ -220,7 +219,7 @@ public class DefaultAuthenticationManager implements AuthenticationManager {
             delayLogin( username );
         }
 
-        final CallbackHandler handler = new WikiCallbackHandler( m_engine.adapt( WikiEngine.class ), null, username, password );
+        final CallbackHandler handler = new WikiCallbackHandler( m_engine, null, username, password );
 
         // Execute the user's specified login module
         final Set< Principal > principals = doJAASLogin( m_loginModuleClass, handler, m_loginModuleOptions );
@@ -277,12 +276,12 @@ public class DefaultAuthenticationManager implements AuthenticationManager {
             log.debug( "Invalidating WikiSession for session ID=" + sid );
         }
         // Retrieve the associated WikiSession and clear the Principal set
-        final WikiSession wikiSession = WikiSession.getWikiSession( m_engine.adapt( WikiEngine.class ), request );
+        final WikiSession wikiSession = WikiSession.getWikiSession( m_engine, request );
         final Principal originalPrincipal = wikiSession.getLoginPrincipal();
         wikiSession.invalidate();
 
         // Remove the wikiSession from the WikiSession cache
-        WikiSession.removeWikiSession( m_engine.adapt( WikiEngine.class ), request );
+        WikiSession.removeWikiSession( m_engine, request );
 
         // We need to flush the HTTP session too
         if ( session != null ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WebContainerCallbackHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WebContainerCallbackHandler.java
index 23ed9ba..4836b58 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WebContainerCallbackHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WebContainerCallbackHandler.java
@@ -18,35 +18,34 @@
  */
 package org.apache.wiki.auth.login;
 
-import java.io.IOException;
+import org.apache.wiki.api.core.Engine;
 
 import javax.security.auth.callback.Callback;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
 
-import org.apache.wiki.WikiEngine;
 
 /**
  * Handles logins made from within JSPWiki.
- * @see org.apache.wiki.WikiSession#getWikiSession(WikiEngine,HttpServletRequest)
+ *
+ * @see org.apache.wiki.WikiSession#getWikiSession(Engine,HttpServletRequest)
  * @since 2.3
  */
-public final class WebContainerCallbackHandler implements CallbackHandler
-{
-    private final HttpServletRequest m_request;
+public final class WebContainerCallbackHandler implements CallbackHandler {
 
-    private final WikiEngine         m_engine;
+    private final HttpServletRequest m_request;
+    private final Engine m_engine;
 
     /**
-     *  Create a new handler.
-     *  
-     *  @param engine The WikiEngine
-     *  @param request The request to look into
+     * Create a new handler.
+     *
+     * @param engine  The WikiEngine
+     * @param request The request to look into
      */
-    public WebContainerCallbackHandler( WikiEngine engine, HttpServletRequest request )
-    {
-        m_engine  = engine;
+    public WebContainerCallbackHandler( final Engine engine, final HttpServletRequest request ) {
+        m_engine = engine;
         m_request = request;
     }
 
@@ -55,21 +54,14 @@ public final class WebContainerCallbackHandler implements CallbackHandler
      * 
      * {@inheritDoc}
      */
-    public void handle( Callback[] callbacks ) throws IOException, UnsupportedCallbackException
-    {
-        for( int i = 0; i < callbacks.length; i++ )
-        {
-            Callback callback = callbacks[i];
-            if ( callback instanceof HttpRequestCallback )
-            {
-                ( (HttpRequestCallback) callback ).setRequest( m_request );
-            }
-            else if( callback instanceof WikiEngineCallback )
-            {
-                ( (WikiEngineCallback) callback ).setEngine( m_engine );
-            }
-            else
-            {
+    @Override
+    public void handle( final Callback[] callbacks ) throws IOException, UnsupportedCallbackException {
+        for( final Callback callback : callbacks ) {
+            if( callback instanceof HttpRequestCallback ) {
+                ( ( HttpRequestCallback )callback ).setRequest( m_request );
+            } else if( callback instanceof WikiEngineCallback ) {
+                ( ( WikiEngineCallback )callback ).setEngine( m_engine );
+            } else {
                 throw new UnsupportedCallbackException( callback );
             }
         }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WikiCallbackHandler.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WikiCallbackHandler.java
index bcf469e..682ca99 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WikiCallbackHandler.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WikiCallbackHandler.java
@@ -18,42 +18,42 @@
  */
 package org.apache.wiki.auth.login;
 
-import java.io.IOException;
+import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.auth.UserManager;
 
-import javax.security.auth.callback.*;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
 
-import org.apache.wiki.WikiEngine;
 
 /**
- * Handles logins made from inside the wiki application, rather than via the web
- * container. This handler is instantiated in
+ * Handles logins made from inside the wiki application, rather than via the web container. This handler is instantiated in
  * {@link org.apache.wiki.auth.AuthenticationManager#login(org.apache.wiki.WikiSession,HttpServletRequest, String, String)}.
- * If container-managed authentication is used, the
- * {@link WebContainerCallbackHandler}is used instead. This callback handler is
+ * If container-managed authentication is used, the {@link WebContainerCallbackHandler}is used instead. This callback handler is
  * designed to be used with {@link UserDatabaseLoginModule}.
+ *
  * @since 2.3
  */
-public class WikiCallbackHandler implements CallbackHandler
-{
-    private final HttpServletRequest m_request;
+public class WikiCallbackHandler implements CallbackHandler {
 
-    private final WikiEngine m_engine;
-    
-    private final String       m_password;
-
-    private final String       m_username;
+    private final HttpServletRequest m_request;
+    private final Engine m_engine;
+    private final String m_password;
+    private final String m_username;
 
     /**
      *  Create a new callback handler.
+     *
      * @param engine the WikiEngine
-     * @param request the user's HTTP request. If passed as <code>null</code>,
-     *  later requests for {@link HttpRequestCallback} will return an UnsupportedCallbackException
+     * @param request the user's HTTP request. If passed as <code>null</code>, later requests for {@link HttpRequestCallback} will return an UnsupportedCallbackException
      * @param username the username
      * @param password the password
      */
-    public WikiCallbackHandler( WikiEngine engine, HttpServletRequest request, String username, String password )
-    {
+    public WikiCallbackHandler( final Engine engine, final HttpServletRequest request, final String username, final String password ) {
         m_request = request;
         m_engine = engine;
         m_username = username;
@@ -65,33 +65,19 @@ public class WikiCallbackHandler implements CallbackHandler
      * 
      * {@inheritDoc}
      */
-    public void handle( Callback[] callbacks ) throws IOException, UnsupportedCallbackException
-    {
-        for( int i = 0; i < callbacks.length; i++ )
-        {
-            Callback callback = callbacks[i];
-            if ( callback instanceof HttpRequestCallback )
-            {
-                ( (HttpRequestCallback) callback ).setRequest( m_request );
-            }
-            else if( callback instanceof WikiEngineCallback )
-            {
-                ( (WikiEngineCallback) callback ).setEngine( m_engine );
-            }
-            else if ( callback instanceof UserDatabaseCallback )
-            {
-                ( (UserDatabaseCallback) callback ).setUserDatabase( m_engine.getUserManager().getUserDatabase() );
-            }
-            else if ( callback instanceof NameCallback )
-            {
-                ( (NameCallback) callback ).setName( m_username );
-            }
-            else if ( callback instanceof PasswordCallback )
-            {
-                ( (PasswordCallback) callback ).setPassword( m_password.toCharArray() );
-            }
-            else
-            {
+    @Override public void handle( final Callback[] callbacks ) throws IOException, UnsupportedCallbackException {
+        for( final Callback callback : callbacks ) {
+            if( callback instanceof HttpRequestCallback ) {
+                ( ( HttpRequestCallback )callback ).setRequest( m_request );
+            } else if( callback instanceof WikiEngineCallback ) {
+                ( ( WikiEngineCallback )callback ).setEngine( m_engine );
+            } else if( callback instanceof UserDatabaseCallback ) {
+                ( ( UserDatabaseCallback )callback ).setUserDatabase( m_engine.getManager( UserManager.class ).getUserDatabase() );
+            } else if( callback instanceof NameCallback ) {
+                ( ( NameCallback )callback ).setName( m_username );
+            } else if( callback instanceof PasswordCallback ) {
+                ( ( PasswordCallback )callback ).setPassword( m_password.toCharArray() );
+            } else {
                 throw new UnsupportedCallbackException( callback );
             }
         }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WikiEngineCallback.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WikiEngineCallback.java
index 3fa57b4..e2e0ace 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WikiEngineCallback.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/WikiEngineCallback.java
@@ -18,38 +18,37 @@
  */
 package org.apache.wiki.auth.login;
 
+import org.apache.wiki.api.core.Engine;
+
 import javax.security.auth.callback.Callback;
 
-import org.apache.wiki.WikiEngine;
 
 /**
- * Callback for requesting and supplying the WikiEngine object required by a
- * LoginModule. This Callback is used by LoginModules needing access to the
- * external authorizer or group manager.
+ * Callback for requesting and supplying the WikiEngine object required by a LoginModule. This Callback is used by LoginModules needing
+ * access to the external authorizer or group manager.
  *
  * @since 2.5
  */
-public class WikiEngineCallback implements Callback
-{
+public class WikiEngineCallback implements Callback {
 
-    private WikiEngine m_engine;
+    private Engine m_engine;
 
     /**
      * Sets the engine object. CallbackHandler objects call this method.
+     *
      * @param engine the engine
      */
-    public void setEngine( WikiEngine engine )
-    {
+    public void setEngine( final Engine engine ) {
         m_engine = engine;
     }
 
     /**
-     * Returns the engine. LoginModules call this method after a
-     * CallbackHandler sets the engine.
+     * Returns the engine. LoginModules call this method after a CallbackHandler sets the engine.
+     *
      * @return the engine
      */
-    public WikiEngine getEngine()
-    {
+    public Engine getEngine() {
         return m_engine;
     }
+
 }