From 8e7c6db335dcd3780cb603216e11c256d2096903 Mon Sep 17 00:00:00 2001 From: Ted Nathan Husted Date: Mon, 19 Mar 2007 22:48:48 +0000 Subject: [PATCH] WW-1803 "ScopeIntercaptor null references on session serialization" apply patch submitted by Sylvain RIBEYRON. git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@520152 13f79535-47bb-0310-9956-ffa450edef68 --- .../struts2/interceptor/ScopeInterceptor.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java index b80da89af..c5f56fb65 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/ScopeInterceptor.java @@ -202,26 +202,30 @@ public class ScopeInterceptor extends AbstractInterceptor implements PreResultLi super(); } + // Since 2.0.7. Avoid null references on session serialization (WW-1803). + private static class NULLClass implements Serializable { + public String toString() { + return "NULL"; + } + public boolean equals(Object obj) { + return obj == null || (obj instanceof NULLClass); + } + } - private static final Object NULL = new Serializable() { - public String toString() { - return "NULL"; - } - }; + private static final Object NULL = new NULLClass(); private static final Object nullConvert(Object o) { if (o == null) { return NULL; } - if (o == NULL) { + if (o == NULL || NULL.equals(o)) { return null; } return o; } - private static Map locks = new IdentityHashMap(); static final void lock(Object o, ActionInvocation invocation) throws Exception {