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