Author: taylor
Date: Fri Feb 10 11:49:05 2006
New Revision: 376818

URL: http://svn.apache.org/viewcvs?rev=376818&view=rev
Log:
lazy load Login Module
In some app servers the module's default constructor is called instead of our 
preferred constructor
via Spring. This attempts to resolve Spring dependencies at a later time than 
at construction

Modified:
    
portals/jetspeed-2/trunk/components/security/src/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java

Modified: 
portals/jetspeed-2/trunk/components/security/src/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java
URL: 
http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/security/src/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java?rev=376818&r1=376817&r2=376818&view=diff
==============================================================================
--- 
portals/jetspeed-2/trunk/components/security/src/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/security/src/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java
 Fri Feb 10 11:49:05 2006
@@ -78,24 +78,30 @@
     /** <p>The user name.</p> */
     private String username;
 
+    
     /**
      * <p>The default login module constructor.</p>
      */
     public DefaultLoginModule()
     {
         LoginModuleProxy loginModuleProxy = 
LoginModuleProxyImpl.loginModuleProxy;
-        this.ums = loginModuleProxy.getUserManager();
+        if (loginModuleProxy != null)
+        {
+            this.ums = loginModuleProxy.getUserManager();
+        }
         debug = false;
         success = false;
         commitSuccess = false;
         username = null;
     }
 
+    
     /**
      * Create a new login module that uses the given user manager.
      * @param userManager the user manager to use
      */
-    protected DefaultLoginModule (UserManager userManager) {
+    protected DefaultLoginModule (UserManager userManager) 
+    {
         ums = userManager;
         debug = false;
         success = false;
@@ -120,6 +126,18 @@
         return true;
     }
 
+    protected void refreshProxy()
+    {
+        if (this.ums == null)
+        {
+            LoginModuleProxy loginModuleProxy = 
LoginModuleProxyImpl.loginModuleProxy;
+            if (loginModuleProxy != null)
+            {
+                this.ums = loginModuleProxy.getUserManager();
+            }
+        }        
+    }
+    
     /**
      * @see javax.security.auth.spi.LoginModule#commit()
      */
@@ -135,6 +153,7 @@
             {
                 // TODO We should get the user profile here and had it in 
cache so that we do not have to retrieve it again.
                 // TODO Ideally the User should be available from the session. 
 Need discussion around this.
+                refreshProxy();
                 commitPrincipals(subject, ums.getUser(username));
 
                 username = null;
@@ -177,6 +196,7 @@
 
             ((PasswordCallback) callbacks[1]).clearPassword();
 
+            refreshProxy();            
             success = ums.authenticate(this.username, password);
 
             callbacks[0] = null;



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to