You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by pe...@apache.org on 2007/01/18 10:52:26 UTC

svn commit: r497379 - /tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/authenticator/ClusterSingleSignOn.java

Author: pero
Date: Thu Jan 18 01:52:25 2007
New Revision: 497379

URL: http://svn.apache.org/viewvc?view=rev&rev=497379
Log:
Refactor and remove some duplicate code.

Modified:
    tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/authenticator/ClusterSingleSignOn.java

Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/authenticator/ClusterSingleSignOn.java
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/authenticator/ClusterSingleSignOn.java?view=diff&rev=497379&r1=497378&r2=497379
==============================================================================
--- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/authenticator/ClusterSingleSignOn.java (original)
+++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/authenticator/ClusterSingleSignOn.java Thu Jan 18 01:52:25 2007
@@ -51,6 +51,8 @@
  * </ul>
  *
  * @author Fabien Carrion
+ * @author Peter Rossbach
+ * @version $Revision:$ $Date:$
  */
 
 public class ClusterSingleSignOn
@@ -178,20 +180,7 @@
      * @param session Session to be associated
      */
     protected void associate(String ssoId, Session session) {
-        if (cluster != null) {
-            messageNumber++;
-            SingleSignOnMessage msg =
-                new SingleSignOnMessage(cluster.getLocalMember(),
-                        ssoId, session.getId());
-            Manager mgr = session.getManager();
-            if ((mgr != null) && (mgr instanceof ClusterManager))
-                msg.setContextName(((ClusterManager) mgr).getName());
-            msg.setAction(SingleSignOnMessage.ADD_SESSION);
-            cluster.sendClusterDomain(msg);
-            if (containerLog.isDebugEnabled())
-                containerLog.debug("SingleSignOnMessage Send with action "
-                        + msg.getAction());
-        }
+        sendSSOId(ssoId,session,SingleSignOnMessage.ADD_SESSION) ;
         associateLocal(ssoId, session);
 
     }
@@ -210,21 +199,8 @@
      * @param session Session to be deregistered
      */
     protected void deregister(String ssoId, Session session) {
-        if (cluster != null) {
-            messageNumber++;
-            SingleSignOnMessage msg =
-                new SingleSignOnMessage(cluster.getLocalMember(),
-                        ssoId, session.getId());
-            Manager mgr = session.getManager();
-            if ((mgr != null) && (mgr instanceof ClusterManager))
-                msg.setContextName(((ClusterManager) mgr).getName());
-            msg.setAction(SingleSignOnMessage.DEREGISTER_SESSION);
-            cluster.sendClusterDomain(msg);
-            if (containerLog.isDebugEnabled())
-                containerLog.debug("SingleSignOnMessage Send with action "
-				   + msg.getAction());
-        }
-        deregisterLocal(ssoId, session);
+       sendSSOId(ssoId,session,SingleSignOnMessage.DEREGISTER_SESSION) ;
+       deregisterLocal(ssoId, session);
     }
 
     protected void deregisterLocal(String ssoId, Session session) {
@@ -240,17 +216,7 @@
      * @param ssoId Single sign on identifier to deregister
      */
     protected void deregister(String ssoId) {
-        if (cluster != null) {
-            messageNumber++;
-            SingleSignOnMessage msg =
-                new SingleSignOnMessage(cluster.getLocalMember(),
-                        ssoId, null);
-            msg.setAction(SingleSignOnMessage.LOGOUT_SESSION);
-            cluster.sendClusterDomain(msg);
-            if (containerLog.isDebugEnabled())
-                containerLog.debug("SingleSignOnMessage Send with action "
-                        + msg.getAction());
-        }
+        sendSSOId(ssoId,null,SingleSignOnMessage.LOGOUT_SESSION) ;
         deregisterLocal(ssoId);
     }
 
@@ -272,21 +238,10 @@
      */
     protected void register(String ssoId, Principal principal, String authType,
                   String username, String password) {
-    	if (cluster != null) {
-    	    messageNumber++;
-    	    SingleSignOnMessage msg =
-    		new SingleSignOnMessage(cluster.getLocalMember(),
-    					ssoId, null);
-    	    msg.setAction(SingleSignOnMessage.REGISTER_SESSION);
-    	    msg.setAuthType(authType);
-    	    msg.setUsername(username);
-    	    msg.setPassword(password);
-    	    cluster.sendClusterDomain(msg);
-    	    if (containerLog.isDebugEnabled())
-    		containerLog.debug("SingleSignOnMessage Send with action "
-    				   + msg.getAction());
-    	}
-    	registerLocal(ssoId, principal, authType, username, password);
+        sendSSOIdWithAuth(ssoId,
+                authType, username, password,
+                SingleSignOnMessage.REGISTER_SESSION);
+     	registerLocal(ssoId, principal, authType, username, password);
     }
 
     protected void registerLocal(String ssoId, Principal principal, String authType,
@@ -322,20 +277,9 @@
      */
     protected void update(String ssoId, Principal principal, String authType,
                           String username, String password) {
-        if (cluster != null) {
-            messageNumber++;
-            SingleSignOnMessage msg =
-                new SingleSignOnMessage(cluster.getLocalMember(),
-                        ssoId, null);
-            msg.setAction(SingleSignOnMessage.UPDATE_SESSION);
-            msg.setAuthType(authType);
-            msg.setUsername(username);
-            msg.setPassword(password);
-            cluster.sendClusterDomain(msg);
-            if (containerLog.isDebugEnabled())
-                containerLog.debug("SingleSignOnMessage Send with action "
-                        + msg.getAction());
-        }
+        sendSSOIdWithAuth(ssoId,
+                authType, username, password,
+                SingleSignOnMessage.UPDATE_SESSION);
         updateLocal(ssoId, principal, authType, username, password);
     }
 
@@ -352,25 +296,73 @@
      * @param session the session to be removed.
      */
     protected void removeSession(String ssoId, Session session) {
+        sendSSOId(ssoId,session,SingleSignOnMessage.REMOVE_SESSION) ;
+        removeSessionLocal(ssoId, session);
+    }
+
+    protected void removeSessionLocal(String ssoId, Session session) {
+        super.removeSession(ssoId, session);
+    }
+    
+    
+    /**
+     * Create SingleSignOnMessage with session informations and send to other domain members.
+     * @param ssoId     identifier of Single sign to be updated
+     * @param session   the session to be handle or null.
+     * @param action    SSO Action type
+     */
+    protected void sendSSOId(String ssoId, Session session, int action) {
         if (cluster != null) {
             messageNumber++;
+            String sessionId = null ;
+            if(session != null)
+                sessionId = session.getId() ;
             SingleSignOnMessage msg =
                 new SingleSignOnMessage(cluster.getLocalMember(),
-                        ssoId, session.getId());
-            Manager mgr = session.getManager();
-            if ((mgr != null) && (mgr instanceof ClusterManager))
-                msg.setContextName(((ClusterManager) mgr).getName());
-            msg.setAction(SingleSignOnMessage.REMOVE_SESSION);
-            cluster.sendClusterDomain(msg);
-            if (containerLog.isDebugEnabled())
-                containerLog.debug("SingleSignOnMessage Send with action "
-                        + msg.getAction());
+                        ssoId, sessionId);
+            if(session != null) {
+                Manager mgr = session.getManager();
+                if ((mgr != null) && (mgr instanceof ClusterManager))
+                    msg.setContextName(((ClusterManager) mgr).getName());
+            }
+            send(msg,action);
         }
-        removeSessionLocal(ssoId, session);
     }
 
-    protected void removeSessionLocal(String ssoId, Session session) {
-        super.removeSession(ssoId, session);
+    /**
+     * Create SingleSignOnMessage with auth informations and send to other domain members.
+     * @param ssoId     identifier of Single sign to be updated
+     * @param authType  the type of authenticator used (BASIC, CLIENT-CERT,
+     *                  DIGEST or FORM)
+     * @param username  the username (if any) used for the authentication
+     * @param password  the password (if any) used for the authentication
+     * @param action    SSO Action type
+     */
+    protected void sendSSOIdWithAuth(String ssoId,String authType,
+            String username, String password, int action) {
+        if (cluster != null) {
+            messageNumber++;
+            SingleSignOnMessage msg =
+                new SingleSignOnMessage(cluster.getLocalMember(),
+                        ssoId, null);
+            msg.setAuthType(authType);
+            msg.setUsername(username);
+            msg.setPassword(password);
+            send(msg,action);
+        }
+    }
+
+    /**
+     * Send SingleSignOnMessage to other domain members.
+     * @param msg     SingleSignOnMessage
+     * @param action  SSO Action type
+     */
+    protected void send(SingleSignOnMessage msg, int action) {
+        msg.setAction(action);
+        cluster.sendClusterDomain(msg);
+        if (containerLog.isDebugEnabled())
+            containerLog.debug("SingleSignOnMessage Send with action "
+                + action);
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org