cziegeler 02/05/29 08:58:22
Modified: src/java/org/apache/cocoon/webapps/authentication
AuthenticationConstants.java
src/java/org/apache/cocoon/webapps/authentication/components
AuthenticationManager.java HandlerManager.java
Log:
Minor updates to authentication manager
Revision Changes Path
1.2 +1 -4
xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/AuthenticationConstants.java
Index: AuthenticationConstants.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/AuthenticationConstants.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AuthenticationConstants.java 17 Apr 2002 10:04:52 -0000 1.1
+++ AuthenticationConstants.java 29 May 2002 15:58:21 -0000 1.2
@@ -55,7 +55,7 @@
* framework.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Id: AuthenticationConstants.java,v 1.1 2002/04/17 10:04:52
cziegeler Exp $
+ * @version CVS $Id: AuthenticationConstants.java,v 1.2 2002/05/29 15:58:21
cziegeler Exp $
*/
public interface AuthenticationConstants {
@@ -65,9 +65,6 @@
/** The name of the session attribute storing the context */
String SESSION_ATTRIBUTE_CONTEXT_NAME =
"org.apache.cocoon.webapps.authentication.SessionContext";
-
- /** The name of the session attribute storing the handler configuration */
- String SESSION_ATTRIBUTE_HANDLERS =
"org.apache.cocoon.webapps.authentication.Handlers";
/** The name of the authentication context. */
String SESSION_CONTEXT_NAME = "authentication";
1.8 +6 -10
xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/components/AuthenticationManager.java
Index: AuthenticationManager.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/components/AuthenticationManager.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- AuthenticationManager.java 29 May 2002 15:38:09 -0000 1.7
+++ AuthenticationManager.java 29 May 2002 15:58:21 -0000 1.8
@@ -98,7 +98,7 @@
* This is the basis authentication component.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Id: AuthenticationManager.java,v 1.7 2002/05/29 15:38:09 cziegeler
Exp $
+ * @version CVS $Id: AuthenticationManager.java,v 1.8 2002/05/29 15:58:21 cziegeler
Exp $
*/
public final class AuthenticationManager
extends AbstractSessionComponent
@@ -326,10 +326,10 @@
throws ProcessingException {
final Request req = ObjectModelHelper.getRequest( this.objectModel );
final Session session = req.getSession();
- Map myHandlers =
(Map)session.getAttribute(AuthenticationConstants.SESSION_ATTRIBUTE_HANDLERS);
+ Map myHandlers =
(Map)session.getAttribute(HandlerManager.SESSION_ATTRIBUTE_HANDLERS);
if (myHandlers == null) {
this.userHandlers = this.configuredHandlers;
-
session.setAttribute(AuthenticationConstants.SESSION_ATTRIBUTE_HANDLERS,
this.userHandlers);
+ session.setAttribute(HandlerManager.SESSION_ATTRIBUTE_HANDLERS,
this.userHandlers);
this.configuredHandlers = null;
this.configureHandlers(this.configuration);
}
@@ -371,7 +371,7 @@
}
/**
- * Create a new context
+ * Return the current handler
*/
public Handler getHandler() {
return this.handler;
@@ -733,7 +733,7 @@
final Request req = ObjectModelHelper.getRequest( this.objectModel );
final Session session = req.getSession(false);
if ( null != session ) {
- this.userHandlers =
(Map)session.getAttribute(AuthenticationConstants.SESSION_ATTRIBUTE_HANDLERS);
+ this.userHandlers =
(Map)session.getAttribute(HandlerManager.SESSION_ATTRIBUTE_HANDLERS);
}
// set the configuration for the handler
@@ -749,11 +749,7 @@
this.application = null;
if (this.handlerName != null) {
- if ( null != this.userHandlers) {
- this.handler = (Handler)this.userHandlers.get(this.handlerName);
- } else {
- this.handler =
(Handler)this.configuredHandlers.get(this.handlerName);
- }
+ this.handler = this.getHandler(this.handlerName);
if (this.handler == null) {
throw new ProcessingException("Handler not found: " +
this.handlerName);
1.4 +50 -1
xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/components/HandlerManager.java
Index: HandlerManager.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/components/HandlerManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- HandlerManager.java 29 May 2002 15:38:09 -0000 1.3
+++ HandlerManager.java 29 May 2002 15:58:21 -0000 1.4
@@ -54,7 +54,9 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.Session;
import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.webapps.authentication.AuthenticationConstants;
import java.util.*;
@@ -62,10 +64,13 @@
* This is a utility class managing the authentication handlers
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Id: HandlerManager.java,v 1.3 2002/05/29 15:38:09 cziegeler Exp $
+ * @version CVS $Id: HandlerManager.java,v 1.4 2002/05/29 15:58:21 cziegeler Exp $
*/
public final class HandlerManager {
+ /** The name of the session attribute storing the handler configuration */
+ public final static String SESSION_ATTRIBUTE_HANDLERS =
"org.apache.cocoon.webapps.authentication.Handlers";
+
public HandlerManager() {}
/** All configured configurations */
@@ -77,6 +82,9 @@
/** The available handlers for the current request */
protected Map availableHandlers = new HashMap(4);
+ /** The handlers of the current user */
+ protected Map userHandlers;
+
/**
* Add new configurations to the pool
*/
@@ -149,6 +157,7 @@
*/
public void clearAvailableHandlers() {
this.availableHandlers.clear();
+ this.userHandlers = null;
}
/**
@@ -173,4 +182,44 @@
}
}
+ /**
+ * Get the handler of the current user
+ */
+ public Handler getHandler(String handlerName,
+ Request request) {
+ if ( null == this.userHandlers) {
+ final Session session = request.getSession(false);
+ if ( null != session) {
+ this.userHandlers =
(Map)session.getAttribute(SESSION_ATTRIBUTE_HANDLERS);
+ }
+ }
+ Handler handler = null;
+ if ( null != this.userHandlers) {
+ handler = (Handler)this.userHandlers.get(handlerName);
+ }
+ if ( null == handler ) {
+ handler = (Handler)this.availableHandlers.get(handlerName);
+ }
+ return handler;
+ }
+
+ /**
+ * Create a handler copy for the user and return it!
+ */
+ public Handler storeUserHandler(Handler handler,
+ Request request) {
+ final Session session = request.getSession();
+ if ( null == this.userHandlers) {
+ this.userHandlers =
(Map)session.getAttribute(SESSION_ATTRIBUTE_HANDLERS);
+ }
+ if ( null == this.userHandlers ) {
+ this.userHandlers = new HashMap(3);
+ }
+ // FIXME (CZ) - clone handler
+ this.userHandlers.put(handler.getName(), handler);
+ // value did change, update attributes
+ session.setAttribute(SESSION_ATTRIBUTE_HANDLERS, this.userHandlers);
+
+ return handler;
+ }
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]