Author: markt
Date: Sun Jan 17 19:34:00 2016
New Revision: 1725113

URL: http://svn.apache.org/viewvc?rev=1725113&view=rev
Log:
Pull up the sessionAttributeFilter option from the cluster managers, rename it 
to sessionAttributeNameFilter and make it available in all Manager 
implementations.

Modified:
    tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java
    tomcat/trunk/java/org/apache/catalina/ha/session/mbeans-descriptors.xml
    tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
    tomcat/trunk/java/org/apache/catalina/session/mbeans-descriptors.xml
    tomcat/trunk/webapps/docs/config/cluster-manager.xml
    tomcat/trunk/webapps/docs/config/manager.xml

Modified: 
tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java?rev=1725113&r1=1725112&r2=1725113&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/session/ClusterManagerBase.java 
Sun Jan 17 19:34:00 2016
@@ -18,7 +18,6 @@ package org.apache.catalina.ha.session;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.util.regex.Pattern;
 
 import org.apache.catalina.Cluster;
 import org.apache.catalina.Context;
@@ -49,20 +48,6 @@ public abstract class ClusterManagerBase
     private boolean notifyListenersOnReplication = true;
 
     /**
-     * The pattern used for including session attributes to
-     *  replication, e.g. <code>^(userName|sessionHistory)$</code>.
-     *  If not set, all session attributes will be eligible for replication.
-     */
-    private String sessionAttributeFilter = null;
-
-    /**
-     * The compiled pattern used for including session attributes to
-     * replication, e.g. <code>^(userName|sessionHistory)$</code>.
-     * If not set, all session attributes will be eligible for replication.
-     */
-    private Pattern sessionAttributePattern = null;
-
-    /**
      * cached replication valve cluster container!
      */
     private volatile ReplicationValve replicationValve = null ;
@@ -96,9 +81,13 @@ public abstract class ClusterManagerBase
      * to replication.
      *
      * @return the sessionAttributeFilter
+     *
+     * @deprecated Use {@link #getSessionAttributeNameFilter()}. Will be 
removed
+     *             in Tomcat 9.0.x
      */
+    @Deprecated
     public String getSessionAttributeFilter() {
-        return sessionAttributeFilter;
+        return getSessionAttributeNameFilter();
     }
 
     /**
@@ -110,16 +99,13 @@ public abstract class ClusterManagerBase
      *
      * @param sessionAttributeFilter
      *            the filter name pattern to set
+     *
+     * @deprecated Use {@link #setSessionAttributeNameFilter(String)}. Will be
+     *             removed in Tomcat 9.0.x
      */
+    @Deprecated
     public void setSessionAttributeFilter(String sessionAttributeFilter) {
-        if (sessionAttributeFilter == null
-            || sessionAttributeFilter.trim().equals("")) {
-            this.sessionAttributeFilter = null;
-            sessionAttributePattern = null;
-        } else {
-            this.sessionAttributeFilter = sessionAttributeFilter;
-            sessionAttributePattern = Pattern.compile(sessionAttributeFilter);
-        }
+        setSessionAttributeNameFilter(sessionAttributeFilter);
     }
 
     public boolean isRecordAllActions() {
@@ -145,15 +131,6 @@ public abstract class ClusterManagerBase
     }
 
 
-    @Override
-    public boolean willAttributeDistribute(String name, Object value) {
-        if (sessionAttributePattern == null) {
-            return true;
-        }
-        return sessionAttributePattern.matcher(name).matches();
-    }
-
-
     public static ClassLoader[] getClassLoaders(Context context) {
         ClassLoader tccl = Thread.currentThread().getContextClassLoader();
         Loader loader = context.getLoader();

Modified: 
tomcat/trunk/java/org/apache/catalina/ha/session/mbeans-descriptors.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/mbeans-descriptors.xml?rev=1725113&r1=1725112&r2=1725113&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/session/mbeans-descriptors.xml 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/session/mbeans-descriptors.xml Sun 
Jan 17 19:34:00 2016
@@ -310,6 +310,10 @@
       is="true"
       description="Flag whether send all actions for session across Tomcat 
cluster nodes."
       type="boolean"/>
+    <attribute
+      name="sessionAttributeNameFilter"
+      descritpion="The string pattern used for including session attributes in 
replication. Null means all attributes are included."
+      type="java.lang.String"/>
     <operation
       name="expireSession"
       description="Expired the given session"
@@ -528,6 +532,10 @@
       is="true"
       description="Flag whether send all actions for session across Tomcat 
cluster nodes."
       type="boolean"/>
+    <attribute
+      name="sessionAttributeNameFilter"
+      descritpion="The string pattern used for including session attributes in 
replication. Null means all attributes are included."
+      type="java.lang.String"/>
     <operation
       name="expireSession"
       description="Expired the given session"

Modified: tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java?rev=1725113&r1=1725112&r2=1725113&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java Sun Jan 17 
19:34:00 2016
@@ -32,6 +32,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.regex.Pattern;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
@@ -199,9 +200,32 @@ public abstract class ManagerBase extend
     protected final PropertyChangeSupport support =
             new PropertyChangeSupport(this);
 
+    private Pattern sessionAttributeNamePattern;
+
 
     // ------------------------------------------------------------- Properties
 
+    public String getSessionAttributeNameFilter() {
+        if (sessionAttributeNamePattern == null) {
+            return null;
+        }
+        return sessionAttributeNamePattern.toString();
+    }
+
+
+    public void setSessionAttributeNameFilter(String 
sessionAttributeNameFilter) {
+        if (sessionAttributeNameFilter == null) {
+            sessionAttributeNamePattern = null;
+        }
+        sessionAttributeNamePattern = 
Pattern.compile(sessionAttributeNameFilter);
+    }
+
+
+    protected Pattern getSessionAttributeNamePattern() {
+        return sessionAttributeNamePattern;
+    }
+
+
     @Override
     public Context getContext() {
         return context;
@@ -241,6 +265,13 @@ public abstract class ManagerBase extend
     }
 
 
+    /**
+     * {@inheritDoc}
+     * <p>
+     * Session attributes do not need to implement {@link java.io.Serializable}
+     * if they are excluded from distribution by
+     * {@link #willAttributeDistribute(String, Object)}.
+     */
     @Override
     public void setDistributable(boolean distributable) {
 
@@ -649,11 +680,18 @@ public abstract class ManagerBase extend
     /**
      * {@inheritDoc}
      * <p>
-     * This implementation always returns {@code true}
+     * This implementation excludes session attributes from distribution if 
the:
+     * <ul>
+     * <li>attribute name matches {@link #getSessionAttributeNameFilter()}</li>
+     * </ul>
      */
     @Override
     public boolean willAttributeDistribute(String name, Object value) {
-        return true;
+        Pattern sessionAttributeNamePattern = getSessionAttributeNamePattern();
+        if (sessionAttributeNamePattern == null) {
+            return true;
+        }
+        return sessionAttributeNamePattern.matcher(name).matches();
     }
 
 

Modified: tomcat/trunk/java/org/apache/catalina/session/mbeans-descriptors.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/mbeans-descriptors.xml?rev=1725113&r1=1725112&r2=1725113&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/mbeans-descriptors.xml 
(original)
+++ tomcat/trunk/java/org/apache/catalina/session/mbeans-descriptors.xml Sun 
Jan 17 19:34:00 2016
@@ -128,6 +128,10 @@
                  type="int"
             writeable="false"/>
 
+    <attribute   name="sessionAttributeNameFilter"
+          descritpion="The string pattern used for including session 
attributes in distribution. Null means all attributes are included."
+                 type="java.lang.String"/>
+
     <operation   name="backgroundProcess"
           description="Invalidate all sessions that have expired."
                impact="ACTION"
@@ -311,6 +315,10 @@
                  type="int"
             writeable="false"/>
 
+    <attribute   name="sessionAttributeNameFilter"
+          descritpion="The string pattern used for including session 
attributes in distribution. Null means all attributes are included."
+                 type="java.lang.String"/>
+
     <operation   name="backgroundProcess"
           description="Invalidate all sessions that have expired."
                impact="ACTION"

Modified: tomcat/trunk/webapps/docs/config/cluster-manager.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/cluster-manager.xml?rev=1725113&r1=1725112&r2=1725113&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/cluster-manager.xml (original)
+++ tomcat/trunk/webapps/docs/config/cluster-manager.xml Sun Jan 17 19:34:00 
2016
@@ -77,14 +77,15 @@
         when session attributes are being replicated or removed across Tomcat
         nodes in the cluster.
       </attribute>
-      <attribute name="sessionAttributeFilter" required="false">
+      <attribute name="sessionAttributeNameFilter" required="false">
         A regular expression used to filter, which session attributes will
         be replicated. An attribute will only be replicated, if its name
         matches this pattern. If the pattern is not set (default), all
         attributes are eligible for replication. As an example, the value
         <code>^(userName|sessionHistory)$</code> will only replicate the two
         session attributes named <code>userName</code> and
-        <code>sessionHistory</code>.
+        <code>sessionHistory</code>. This attribute was previously called
+        <strong>sessionAttributeFilter</strong>.
       </attribute>
       <attribute name="maxInactiveInterval" required="false">
         <p>The initial maximum time interval, in seconds,

Modified: tomcat/trunk/webapps/docs/config/manager.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/manager.xml?rev=1725113&r1=1725112&r2=1725113&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/manager.xml (original)
+++ tomcat/trunk/webapps/docs/config/manager.xml Sun Jan 17 19:34:00 2016
@@ -166,6 +166,15 @@
         string.</p>
       </attribute>
 
+      <attribute name="sessionAttributeNameFilter" required="false">
+        A regular expression used to filter, which session attributes will
+        be distributed. An attribute will only be distributed if its name
+        matches this pattern. If the pattern is not set (default), all
+        attributes are eligible for replication. As an example, the value
+        <code>^(userName|sessionHistory)$</code> will only distribute the two
+        session attributes named <code>userName</code> and
+        <code>sessionHistory</code>.
+      </attribute>
     </attributes>
 
     <h3>Persistent Manager Implementation</h3>
@@ -255,6 +264,15 @@
         <code>org.apache.catalina.session.StandardManager</code> class.
         </p>
       </attribute>
+      <attribute name="sessionAttributeNameFilter" required="false">
+        A regular expression used to filter, which session attributes will
+        be distributed. An attribute will only be distributed if its name
+        matches this pattern. If the pattern is not set (default), all
+        attributes are eligible for replication. As an example, the value
+        <code>^(userName|sessionHistory)$</code> will only distribute the two
+        session attributes named <code>userName</code> and
+        <code>sessionHistory</code>.
+      </attribute>
     </attributes>
 
     <p>In order to successfully use a PersistentManager, you must nest inside



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

Reply via email to