completed documentation on session destruction callbacks
This commit is contained in:
parent
6b2d4a81a0
commit
c8080be4e5
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2008 the original author or authors.
|
* Copyright 2002-2009 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -278,10 +278,12 @@ public class PortletRequestAttributes extends AbstractRequestAttributes {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register the given callback as to be executed after session termination.
|
* Register the given callback as to be executed after session termination.
|
||||||
|
* <p>Note: The callback object should be serializable in order to survive
|
||||||
|
* web app restarts.
|
||||||
* @param name the name of the attribute to register the callback for
|
* @param name the name of the attribute to register the callback for
|
||||||
* @param callback the callback to be executed for destruction
|
* @param callback the callback to be executed for destruction
|
||||||
*/
|
*/
|
||||||
private void registerSessionDestructionCallback(String name, Runnable callback) {
|
protected void registerSessionDestructionCallback(String name, Runnable callback) {
|
||||||
PortletSession session = getSession(true);
|
PortletSession session = getSession(true);
|
||||||
session.setAttribute(DESTRUCTION_CALLBACK_NAME_PREFIX + name,
|
session.setAttribute(DESTRUCTION_CALLBACK_NAME_PREFIX + name,
|
||||||
new DestructionCallbackBindingListener(callback));
|
new DestructionCallbackBindingListener(callback));
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2008 the original author or authors.
|
* Copyright 2002-2009 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -23,12 +23,22 @@ import javax.servlet.http.HttpSessionBindingListener;
|
||||||
/**
|
/**
|
||||||
* Adapter that implements the Servlet 2.3 HttpSessionBindingListener
|
* Adapter that implements the Servlet 2.3 HttpSessionBindingListener
|
||||||
* interface, wrapping a session destruction callback.
|
* interface, wrapping a session destruction callback.
|
||||||
|
*
|
||||||
|
* @author Juergen Hoeller
|
||||||
|
* @since 3.0
|
||||||
|
* @see RequestAttributes#registerDestructionCallback
|
||||||
|
* @see ServletRequestAttributes#registerSessionDestructionCallback
|
||||||
*/
|
*/
|
||||||
public class DestructionCallbackBindingListener implements HttpSessionBindingListener, Serializable {
|
public class DestructionCallbackBindingListener implements HttpSessionBindingListener, Serializable {
|
||||||
|
|
||||||
private final Runnable destructionCallback;
|
private final Runnable destructionCallback;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new DestructionCallbackBindingListener for the given callback.
|
||||||
|
* @param destructionCallback the Runnable to execute when this listener
|
||||||
|
* object gets unbound from the session
|
||||||
|
*/
|
||||||
public DestructionCallbackBindingListener(Runnable destructionCallback) {
|
public DestructionCallbackBindingListener(Runnable destructionCallback) {
|
||||||
this.destructionCallback = destructionCallback;
|
this.destructionCallback = destructionCallback;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2007 the original author or authors.
|
* Copyright 2002-2009 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -53,12 +53,19 @@ public interface RequestAttributes {
|
||||||
int SCOPE_GLOBAL_SESSION = 2;
|
int SCOPE_GLOBAL_SESSION = 2;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the standard reference to the request object: "request".
|
||||||
|
* @see #resolveReference
|
||||||
|
*/
|
||||||
String REFERENCE_REQUEST = "request";
|
String REFERENCE_REQUEST = "request";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the standard reference to the session object: "session".
|
||||||
|
* @see #resolveReference
|
||||||
|
*/
|
||||||
String REFERENCE_SESSION = "session";
|
String REFERENCE_SESSION = "session";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the value for the scoped attribute of the given name, if any.
|
* Return the value for the scoped attribute of the given name, if any.
|
||||||
* @param name the name of the attribute
|
* @param name the name of the attribute
|
||||||
|
@ -108,6 +115,9 @@ public interface RequestAttributes {
|
||||||
* facade's {@link #removeAttribute(String, int)} method, any registered
|
* facade's {@link #removeAttribute(String, int)} method, any registered
|
||||||
* destruction callback should be disabled as well, assuming that the
|
* destruction callback should be disabled as well, assuming that the
|
||||||
* removed object will be reused or manually destroyed.
|
* removed object will be reused or manually destroyed.
|
||||||
|
* <p><b>NOTE:</b> Callback objects should generally be serializable if
|
||||||
|
* they are being registered for a session scope. Otherwise the callback
|
||||||
|
* (or even the entire session) might not survive web app restarts.
|
||||||
* @param name the name of the attribute to register the callback for
|
* @param name the name of the attribute to register the callback for
|
||||||
* @param callback the destruction callback to be executed
|
* @param callback the destruction callback to be executed
|
||||||
* @param scope the scope identifier
|
* @param scope the scope identifier
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2008 the original author or authors.
|
* Copyright 2002-2009 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -243,10 +243,12 @@ public class ServletRequestAttributes extends AbstractRequestAttributes {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register the given callback as to be executed after session termination.
|
* Register the given callback as to be executed after session termination.
|
||||||
|
* <p>Note: The callback object should be serializable in order to survive
|
||||||
|
* web app restarts.
|
||||||
* @param name the name of the attribute to register the callback for
|
* @param name the name of the attribute to register the callback for
|
||||||
* @param callback the callback to be executed for destruction
|
* @param callback the callback to be executed for destruction
|
||||||
*/
|
*/
|
||||||
private void registerSessionDestructionCallback(String name, Runnable callback) {
|
protected void registerSessionDestructionCallback(String name, Runnable callback) {
|
||||||
HttpSession session = getSession(true);
|
HttpSession session = getSession(true);
|
||||||
session.setAttribute(DESTRUCTION_CALLBACK_NAME_PREFIX + name,
|
session.setAttribute(DESTRUCTION_CALLBACK_NAME_PREFIX + name,
|
||||||
new DestructionCallbackBindingListener(callback));
|
new DestructionCallbackBindingListener(callback));
|
||||||
|
|
Loading…
Reference in New Issue