statelessfilter-commits Mailing List for Java Stateless Servlet Filter (Page 3)
Status: Beta
Brought to you by:
nricheton
You can subscribe to this list here.
| 2011 |
Jan
|
Feb
(16) |
Mar
(4) |
Apr
|
May
|
Jun
(1) |
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(15) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2012 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(5) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(23) |
Nov
|
Dec
|
|
From: <nri...@us...> - 2011-07-25 06:25:00
|
Revision: 83
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=83&view=rev
Author: nricheton
Date: 2011-07-25 06:24:54 +0000 (Mon, 25 Jul 2011)
Log Message:
-----------
https://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=25
0000025: Full response buffering is overkill for cookies backends
Modified Paths:
--------------
trunk/stateless-processor-cookie/src/main/java/net/sourceforge/statelessfilter/processor/request/Cookie2AttributeProcessor.java
trunk/stateless-session/src/main/java/net/sourceforge/statelessfilter/backend/session/SessionBackend.java
Modified: trunk/stateless-processor-cookie/src/main/java/net/sourceforge/statelessfilter/processor/request/Cookie2AttributeProcessor.java
===================================================================
--- trunk/stateless-processor-cookie/src/main/java/net/sourceforge/statelessfilter/processor/request/Cookie2AttributeProcessor.java 2011-07-24 21:51:13 UTC (rev 82)
+++ trunk/stateless-processor-cookie/src/main/java/net/sourceforge/statelessfilter/processor/request/Cookie2AttributeProcessor.java 2011-07-25 06:24:54 UTC (rev 83)
@@ -16,6 +16,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import net.sourceforge.statelessfilter.filter.Configuration;
import net.sourceforge.statelessfilter.processor.IRequestProcessor;
import net.sourceforge.statelessfilter.utils.CookieUtils;
@@ -114,8 +115,8 @@
*
* @see net.sourceforge.statelessfilter.filter.IPlugin#isBufferingRequired()
*/
- public boolean isBufferingRequired() {
- return true;
+ public String isBufferingRequired() {
+ return Configuration.BUFFERING_HEADERS;
}
/**
Modified: trunk/stateless-session/src/main/java/net/sourceforge/statelessfilter/backend/session/SessionBackend.java
===================================================================
--- trunk/stateless-session/src/main/java/net/sourceforge/statelessfilter/backend/session/SessionBackend.java 2011-07-24 21:51:13 UTC (rev 82)
+++ trunk/stateless-session/src/main/java/net/sourceforge/statelessfilter/backend/session/SessionBackend.java 2011-07-25 06:24:54 UTC (rev 83)
@@ -24,6 +24,7 @@
import net.sourceforge.statelessfilter.backend.ISessionBackend;
import net.sourceforge.statelessfilter.backend.ISessionData;
import net.sourceforge.statelessfilter.backend.support.CookieDataSupport;
+import net.sourceforge.statelessfilter.filter.Configuration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,8 +77,8 @@
// Nothing to init
}
- public boolean isBufferingRequired() {
- return true;
+ public String isBufferingRequired() {
+ return Configuration.BUFFERING_HEADERS;
}
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-07-24 21:51:21
|
Revision: 82
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=82&view=rev
Author: nricheton
Date: 2011-07-24 21:51:13 +0000 (Sun, 24 Jul 2011)
Log Message:
-----------
https://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=25
0000025: Full response buffering is overkill for cookies backends
Modified Paths:
--------------
trunk/stateless-core/pom.xml
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/Configuration.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapper.java
trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/backend/MockSessionBackend.java
trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/filter/StatelessFilterTest.java
Added Paths:
-----------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/headers/
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/headers/HeaderBufferedHttpResponseWrapper.java
Property Changed:
----------------
trunk/stateless-core/src/main/java/
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-06-15 10:39:12 UTC (rev 81)
+++ trunk/stateless-core/pom.xml 2011-07-24 21:51:13 UTC (rev 82)
@@ -5,7 +5,6 @@
<version>0.8-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
<name>Core</name>
<version>0.8-SNAPSHOT</version>
Property changes on: trunk/stateless-core/src/main/java
___________________________________________________________________
Added: svn:ignore
+ META-INF
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2011-06-15 10:39:12 UTC (rev 81)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2011-07-24 21:51:13 UTC (rev 82)
@@ -25,6 +25,7 @@
import net.sourceforge.statelessfilter.backend.ISessionBackend;
import net.sourceforge.statelessfilter.backend.ISessionData;
+import net.sourceforge.statelessfilter.filter.Configuration;
import net.sourceforge.statelessfilter.utils.CookieUtils;
import org.apache.commons.codec.binary.Base64;
@@ -55,218 +56,215 @@
*
*/
public abstract class CookieBackendSupport implements ISessionBackend {
- /**
- * If cookie data exceed this value, multiple cookie are created.
- */
- private static final int COOKIE_MAX_SIZE = 3000;
- private static Logger logger = LoggerFactory
- .getLogger(CookieBackendSupport.class);
+ /**
+ * If cookie data exceed this value, multiple cookie are created.
+ */
+ private static final int COOKIE_MAX_SIZE = 3000;
+ private static Logger logger = LoggerFactory.getLogger(CookieBackendSupport.class);
- /* Constants used in properties */
- private static final String PARAM_COOKIEDOMAIN = "cookiedomain"; //$NON-NLS-1$
- private static final String PARAM_COOKIEMAXAGE = "cookiemaxage"; //$NON-NLS-1$
- private static final String PARAM_COOKIENAME = "cookiename"; //$NON-NLS-1$
- private static final String PARAM_COOKIEPATH = "cookiepath"; //$NON-NLS-1$
+ /* Constants used in properties */
+ private static final String PARAM_COOKIEDOMAIN = "cookiedomain"; //$NON-NLS-1$
+ private static final String PARAM_COOKIEMAXAGE = "cookiemaxage"; //$NON-NLS-1$
+ private static final String PARAM_COOKIENAME = "cookiename"; //$NON-NLS-1$
+ private static final String PARAM_COOKIEPATH = "cookiepath"; //$NON-NLS-1$
- /**
- * Constant used to store the number of cookie segment within a single
- * request. This information is used for cleaning.
- *
- * <p>Constant value depends of the cookie name.
- * @see CookieBackendSupport#setCookieName(String)
- */
- private String ATTR_COUNT = "stateless.session.count"; //$NON-NLS-1$
+ /**
+ * Constant used to store the number of cookie segment within a single
+ * request. This information is used for cleaning.
+ *
+ * <p>
+ * Constant value depends of the cookie name.
+ *
+ * @see CookieBackendSupport#setCookieName(String)
+ */
+ private String ATTR_COUNT = "stateless.session.count"; //$NON-NLS-1$
- /* Default values */
- protected String cookieName = "session"; //$NON-NLS-1$
- protected String domain = null;
- protected Integer maxAge = null;
- protected String path = "/"; //$NON-NLS-1$
+ /* Default values */
+ protected String cookieName = "session"; //$NON-NLS-1$
+ protected String domain = null;
+ protected Integer maxAge = null;
+ protected String path = "/"; //$NON-NLS-1$
- /**
- * @see net.sourceforge.statelessfilter.backend.ISessionBackend#destroy()
- */
- abstract public void destroy();
+ /**
+ * @see net.sourceforge.statelessfilter.backend.ISessionBackend#destroy()
+ */
+ abstract public void destroy();
- /**
- * @see net.sourceforge.statelessfilter.backend.ISessionBackend#getId()
- */
- abstract public String getId();
+ /**
+ * @see net.sourceforge.statelessfilter.backend.ISessionBackend#getId()
+ */
+ abstract public String getId();
- /**
- * Read cookie configuration : name, path, domain and maxAge.
- *
- * @see net.sourceforge.statelessfilter.backend.ISessionBackend#init(java.util.Map)
- */
- public void init(Map<String, String> config) throws Exception {
- // Name
- String name = config.get(PARAM_COOKIENAME);
- if (!StringUtils.isEmpty(name)) {
- setCookieName(name);
- }
+ /**
+ * Read cookie configuration : name, path, domain and maxAge.
+ *
+ * @see net.sourceforge.statelessfilter.backend.ISessionBackend#init(java.util.Map)
+ */
+ public void init(Map<String, String> config) throws Exception {
+ // Name
+ String name = config.get(PARAM_COOKIENAME);
+ if (!StringUtils.isEmpty(name)) {
+ setCookieName(name);
+ }
- // Path
- String path = config.get(PARAM_COOKIEPATH);
- if (!StringUtils.isEmpty(path)) {
- this.path = path;
- }
+ // Path
+ String path = config.get(PARAM_COOKIEPATH);
+ if (!StringUtils.isEmpty(path)) {
+ this.path = path;
+ }
- // Domain
- String domain = config.get(PARAM_COOKIEDOMAIN);
- if (!StringUtils.isEmpty(domain)) {
- this.domain = domain;
- }
+ // Domain
+ String domain = config.get(PARAM_COOKIEDOMAIN);
+ if (!StringUtils.isEmpty(domain)) {
+ this.domain = domain;
+ }
- // MaxAge
- String maxAge = config.get(PARAM_COOKIEMAXAGE);
- if (!StringUtils.isEmpty(maxAge)) {
- this.maxAge = new Integer(Integer.parseInt(maxAge));
- }
+ // MaxAge
+ String maxAge = config.get(PARAM_COOKIEMAXAGE);
+ if (!StringUtils.isEmpty(maxAge)) {
+ this.maxAge = new Integer(Integer.parseInt(maxAge));
+ }
- }
+ }
- /**
- * Always true for cookies since we need to create cookie at the end of the
- * request, when data has already been sent.
- *
- * @see net.sourceforge.statelessfilter.backend.ISessionBackend#isBufferingRequired()
- */
- public boolean isBufferingRequired() {
- return true;
- }
+ /**
+ * Buffering only headers should be enough for most cases. But if the
+ * application updates session after sending response body, switch to full
+ * buffering in configuration.
+ *
+ * @see net.sourceforge.statelessfilter.backend.ISessionBackend#isBufferingRequired()
+ */
+ public String isBufferingRequired() {
+ return Configuration.BUFFERING_HEADERS;
+ }
- /**
- * @see net.sourceforge.statelessfilter.backend.ISessionBackend#restore(javax.servlet.http.HttpServletRequest)
- */
- abstract public ISessionData restore(HttpServletRequest request);
+ /**
+ * @see net.sourceforge.statelessfilter.backend.ISessionBackend#restore(javax.servlet.http.HttpServletRequest)
+ */
+ abstract public ISessionData restore(HttpServletRequest request);
- /**
- * @see net.sourceforge.statelessfilter.backend.ISessionBackend#save(net.sourceforge.statelessfilter.backend.ISessionData,
- * java.util.List, javax.servlet.http.HttpServletRequest,
- * javax.servlet.http.HttpServletResponse)
- */
- abstract public void save(ISessionData session,
- List<String> dirtyAttributes, HttpServletRequest request,
- HttpServletResponse response) throws IOException;
+ /**
+ * @see net.sourceforge.statelessfilter.backend.ISessionBackend#save(net.sourceforge.statelessfilter.backend.ISessionData,
+ * java.util.List, javax.servlet.http.HttpServletRequest,
+ * javax.servlet.http.HttpServletResponse)
+ */
+ abstract public void save(ISessionData session, List<String> dirtyAttributes, HttpServletRequest request,
+ HttpServletResponse response) throws IOException;
- /**
- * @deprecated see :{@link CookieUtils}
- * @param request
- * @param content
- * @return
- */
- @Deprecated
- protected Cookie createCookie(String name, String content) {
- try {
- return CookieUtils
- .createCookie(name, content, domain, path, maxAge);
- } catch (SignatureException e) {
- logger.error("Error creating cookie", e); //$NON-NLS-1$
- }
- return null;
- }
+ /**
+ * @deprecated see :{@link CookieUtils}
+ * @param request
+ * @param content
+ * @return
+ */
+ @Deprecated
+ protected Cookie createCookie(String name, String content) {
+ try {
+ return CookieUtils.createCookie(name, content, domain, path, maxAge);
+ } catch (SignatureException e) {
+ logger.error("Error creating cookie", e); //$NON-NLS-1$
+ }
+ return null;
+ }
- /**
- * @deprecated see :{@link CookieUtils}
- * @param request
- * @param name
- * @return
- */
- @Deprecated
- protected Cookie getCookie(HttpServletRequest request, String name) {
- try {
- return CookieUtils.getCookie(request, name);
- } catch (SignatureException e) {
- logger.error("Error sending cookie", e); //$NON-NLS-1$
- }
- return null;
- }
+ /**
+ * @deprecated see :{@link CookieUtils}
+ * @param request
+ * @param name
+ * @return
+ */
+ @Deprecated
+ protected Cookie getCookie(HttpServletRequest request, String name) {
+ try {
+ return CookieUtils.getCookie(request, name);
+ } catch (SignatureException e) {
+ logger.error("Error sending cookie", e); //$NON-NLS-1$
+ }
+ return null;
+ }
- /**
- * Read raw data from cookie.
- *
- * @param request
- * @param response
- * @return
- */
- protected byte[] getCookieData(HttpServletRequest request,
- HttpServletResponse response) {
- int i = 0;
- Cookie c = null;
- StringBuilder data = new StringBuilder();
+ /**
+ * Read raw data from cookie.
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ protected byte[] getCookieData(HttpServletRequest request, HttpServletResponse response) {
+ int i = 0;
+ Cookie c = null;
+ StringBuilder data = new StringBuilder();
- while ((c = getCookie(request, cookieName + i)) != null) {
- data.append(c.getValue());
- i++;
- }
+ while ((c = getCookie(request, cookieName + i)) != null) {
+ data.append(c.getValue());
+ i++;
+ }
- request.setAttribute(ATTR_COUNT, new Integer(i));
+ request.setAttribute(ATTR_COUNT, new Integer(i));
- String dataString = data.toString();
- if (dataString.length() == 0) {
- return null;
- }
- return Base64.decodeBase64(dataString);
- }
+ String dataString = data.toString();
+ if (dataString.length() == 0) {
+ return null;
+ }
+ return Base64.decodeBase64(dataString);
+ }
- /**
- * Set raw data in a cookie. Data is split in several cookies if it exceeds
- * max cookie length.
- * <p>
- * Also ensure that the reponse cannot be cached (Cache-control header set
- * to private/no-cache/no-store/must-revalidate)
- *
- * @param request
- * @param response
- * @param data
- */
- protected void setCookieData(HttpServletRequest request,
- HttpServletResponse response, byte[] data) {
- // As soon as we send a session cookie, the response must not be cached.
- response.setHeader("Cache-Control",
- "private, no-cache, no-store, must-revalidate");
+ /**
+ * Set raw data in a cookie. Data is split in several cookies if it exceeds
+ * max cookie length.
+ * <p>
+ * Also ensure that the reponse cannot be cached (Cache-control header set
+ * to private/no-cache/no-store/must-revalidate)
+ *
+ * @param request
+ * @param response
+ * @param data
+ */
+ protected void setCookieData(HttpServletRequest request, HttpServletResponse response, byte[] data) {
+ // As soon as we send a session cookie, the response must not be cached.
+ response.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate");
- String encoded = StringUtils.EMPTY;
- if (data != null) {
- encoded = new String(Base64.encodeBase64(data));
- }
+ String encoded = StringUtils.EMPTY;
+ if (data != null) {
+ encoded = new String(Base64.encodeBase64(data));
+ }
- ArrayList<String> splittedData = new ArrayList<String>();
- while (encoded.length() > COOKIE_MAX_SIZE) {
- splittedData.add(encoded.substring(0, COOKIE_MAX_SIZE));
- encoded = encoded.substring(COOKIE_MAX_SIZE);
- }
- if (encoded.length() > 0) {
- splittedData.add(encoded);
- }
+ ArrayList<String> splittedData = new ArrayList<String>();
+ while (encoded.length() > COOKIE_MAX_SIZE) {
+ splittedData.add(encoded.substring(0, COOKIE_MAX_SIZE));
+ encoded = encoded.substring(COOKIE_MAX_SIZE);
+ }
+ if (encoded.length() > 0) {
+ splittedData.add(encoded);
+ }
- int i = 0;
- Cookie c = null;
- for (String datapart : splittedData) {
- c = createCookie(cookieName + i, datapart);
- response.addCookie(c);
- i++;
- }
+ int i = 0;
+ Cookie c = null;
+ for (String datapart : splittedData) {
+ c = createCookie(cookieName + i, datapart);
+ response.addCookie(c);
+ i++;
+ }
- // Clear no longer used segments.
- int previousCount = ((Integer) request.getAttribute(ATTR_COUNT))
- .intValue();
- while (i < previousCount) {
- c = createCookie(cookieName + i, StringUtils.EMPTY);
- response.addCookie(c);
- i++;
- }
+ // Clear no longer used segments.
+ int previousCount = ((Integer) request.getAttribute(ATTR_COUNT)).intValue();
+ while (i < previousCount) {
+ c = createCookie(cookieName + i, StringUtils.EMPTY);
+ response.addCookie(c);
+ i++;
+ }
- }
+ }
- /**
- * Set the name of the cookie and update internal values accordingly.
- * @param cookieName
- */
- protected void setCookieName(String cookieName) {
- this.cookieName = cookieName;
-
- // Update constant to inclue cookie name.
- ATTR_COUNT = "stateless." + cookieName + ".count"; //$NON-NLS-1$ //$NON-NLS-2$
- }
+ /**
+ * Set the name of the cookie and update internal values accordingly.
+ *
+ * @param cookieName
+ */
+ protected void setCookieName(String cookieName) {
+ this.cookieName = cookieName;
+
+ // Update constant to inclue cookie name.
+ ATTR_COUNT = "stateless." + cookieName + ".count"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
}
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/Configuration.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/Configuration.java 2011-06-15 10:39:12 UTC (rev 81)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/Configuration.java 2011-07-24 21:51:13 UTC (rev 82)
@@ -29,10 +29,15 @@
*
*/
public class Configuration {
+
+ public static final String BUFFERING_FALSE="false" ;
+ public static final String BUFFERING_HEADERS="headers" ;
+ public static final String BUFFERING_FULL="full" ;
+
public HashMap<String, ISessionBackend> backends = new HashMap<String, ISessionBackend>();
public HashMap<String, String> backendsAttributeMapping = new HashMap<String, String>();
public String defaultBackend = StringUtils.EMPTY;
- public boolean isBufferingRequired = false;
+ public String isBufferingRequired = BUFFERING_FALSE;
public List<IRequestProcessor> requestProcessors = new ArrayList<IRequestProcessor>();
public boolean useDirty = false;
}
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java 2011-06-15 10:39:12 UTC (rev 81)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java 2011-07-24 21:51:13 UTC (rev 82)
@@ -56,5 +56,5 @@
*
* @return
*/
- boolean isBufferingRequired();
+ String isBufferingRequired();
}
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java 2011-06-15 10:39:12 UTC (rev 81)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java 2011-07-24 21:51:13 UTC (rev 82)
@@ -41,6 +41,7 @@
import net.sourceforge.statelessfilter.spring.SpringObjectInstantiationListener;
import net.sourceforge.statelessfilter.wrappers.BufferedHttpResponseWrapper;
import net.sourceforge.statelessfilter.wrappers.StatelessRequestWrapper;
+import net.sourceforge.statelessfilter.wrappers.headers.HeaderBufferedHttpResponseWrapper;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
@@ -55,453 +56,465 @@
*
*/
public class StatelessFilter implements Filter {
- private static final String CONFIG_ATTRIBUTE_PREFIX = "attribute."; //$NON-NLS-1$
- private static final String CONFIG_DEFAULT_BACKEND = "default"; //$NON-NLS-1$
- private static final String CONFIG_DIRTY = "dirtycheck"; //$NON-NLS-1$
- private static final String CONFIG_INSTANTIATION_LISTENER = "instantiationListener"; //$NON-NLS-1$
- private static final String CONFIG_LOCATION = "configurationLocation"; //$NON-NLS-1$
- private static final String CONFIG_LOCATION_DEFAULT = "/stateless.properties"; //$NON-NLS-1$
- /**
- * Location of backend configuration file.
- */
- private static final String CONFIG_PLUGIN_BACKEND = "stateless-backend.properties"; //$NON-NLS-1$
- private static final String CONFIG_PLUGIN_BACKEND_IMPL = "backendImpl"; //$NON-NLS-1$
- /**
- * Location of request processor configuration file.
- */
- private static final String CONFIG_PLUGIN_PROCESSOR = "stateless-processor.properties"; //$NON-NLS-1$
- private static final String CONFIG_PLUGIN_PROCESSOR_IMPL = "processorImpl"; //$NON-NLS-1$
- private static final String DEBUG_INIT = "Stateless filter init..."; //$NON-NLS-1$
- private static final String DEBUG_PROCESSING = "Processing "; //$NON-NLS-1$
- private static final String DOT = "."; //$NON-NLS-1$
- private static final String EXCLUDE_PATTERN_SEPARATOR = ","; //$NON-NLS-1$
- private static final String INFO_BACKEND = "Backend "; //$NON-NLS-1$
- private static final String INFO_BUFFERING = " enables output buffering."; //$NON-NLS-1$
- private static final String INFO_DEFAULT_BACKEND = "Default Session backend is "; //$NON-NLS-1$
- private static final String INFO_READY = " ready."; //$NON-NLS-1$
- private static final String INFO_REQUEST_PROCESSOR = "Request processor "; //$NON-NLS-1$
+ private static final String CONFIG_ATTRIBUTE_PREFIX = "attribute."; //$NON-NLS-1$
+ private static final String CONFIG_DEFAULT_BACKEND = "default"; //$NON-NLS-1$
+ private static final String CONFIG_DIRTY = "dirtycheck"; //$NON-NLS-1$
+ private static final String CONFIG_INSTANTIATION_LISTENER = "instantiationListener"; //$NON-NLS-1$
+ private static final String CONFIG_LOCATION = "configurationLocation"; //$NON-NLS-1$
+ private static final String CONFIG_LOCATION_DEFAULT = "/stateless.properties"; //$NON-NLS-1$
+ /**
+ * Location of backend configuration file.
+ */
+ private static final String CONFIG_PLUGIN_BACKEND = "stateless-backend.properties"; //$NON-NLS-1$
+ private static final String CONFIG_PLUGIN_BACKEND_IMPL = "backendImpl"; //$NON-NLS-1$
+ /**
+ * Location of request processor configuration file.
+ */
+ private static final String CONFIG_PLUGIN_PROCESSOR = "stateless-processor.properties"; //$NON-NLS-1$
+ private static final String CONFIG_PLUGIN_PROCESSOR_IMPL = "processorImpl"; //$NON-NLS-1$
+ private static final String DEBUG_INIT = "Stateless filter init..."; //$NON-NLS-1$
+ private static final String DEBUG_PROCESSING = "Processing "; //$NON-NLS-1$
+ private static final String DOT = "."; //$NON-NLS-1$
+ private static final String EXCLUDE_PATTERN_SEPARATOR = ","; //$NON-NLS-1$
+ private static final String INFO_BACKEND = "Backend "; //$NON-NLS-1$
+ private static final String INFO_BUFFERING = " enables output buffering."; //$NON-NLS-1$
+ private static final String INFO_DEFAULT_BACKEND = "Default Session backend is "; //$NON-NLS-1$
+ private static final String INFO_READY = " ready."; //$NON-NLS-1$
+ private static final String INFO_REQUEST_PROCESSOR = "Request processor "; //$NON-NLS-1$
- private static Logger logger = LoggerFactory
- .getLogger(StatelessFilter.class);
- private static final String WARN_BACKEND_NOT_FOUND1 = "Specified backend '"; //$NON-NLS-1$
- private static final String WARN_BACKEND_NOT_FOUND2 = "' is not installed. Missing jar ? "; //$NON-NLS-1$
- private static final String WARN_LOAD_CONF = "Cannot load global configuration /stateless.properties. Using defaults"; //$NON-NLS-1$
- private IObjectInstantiationListener instantiationListener = null;
+ private static Logger logger = LoggerFactory.getLogger(StatelessFilter.class);
- private List<Pattern> excludePatterns = null;
- private ServletContext servletContext = null;
- protected Configuration configuration = new Configuration();
+ private static final String WARN_BACKEND_NOT_FOUND1 = "Specified backend '"; //$NON-NLS-1$
+ private static final String WARN_BACKEND_NOT_FOUND2 = "' is not installed. Missing jar ? "; //$NON-NLS-1$
+ private static final String WARN_LOAD_CONF = "Cannot load global configuration /stateless.properties. Using defaults"; //$NON-NLS-1$
+ private IObjectInstantiationListener instantiationListener = null;
- /**
- * Servlet config paramter name used to configure the list of the excluded
- * uri patterns.
- */
- public static final String PARAM_EXCLUDE_PATTERN_LIST = "excludePatternList"; //$NON-NLS-1$
+ private List<Pattern> excludePatterns = null;
+ private ServletContext servletContext = null;
+ protected Configuration configuration = new Configuration();
- /**
- * @see javax.servlet.Filter#destroy()
- */
- public void destroy() {
- // Destroy all backends
- for (ISessionBackend backend : configuration.backends.values()) {
- backend.destroy();
- }
- configuration.backends.clear();
- }
+ /**
+ * Servlet config paramter name used to configure the list of the excluded
+ * uri patterns.
+ */
+ public static final String PARAM_EXCLUDE_PATTERN_LIST = "excludePatternList"; //$NON-NLS-1$
- /**
- * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
- * javax.servlet.ServletResponse, javax.servlet.FilterChain)
- */
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- HttpServletResponse httpResponse = (HttpServletResponse) response;
+ /**
+ * @see javax.servlet.Filter#destroy()
+ */
+ public void destroy() {
+ // Destroy all backends
+ for (ISessionBackend backend : configuration.backends.values()) {
+ backend.destroy();
+ }
+ configuration.backends.clear();
+ }
- // Test if the request is excluded
- HttpServletRequest httpRequest = (HttpServletRequest) request;
- if (isExcluded(httpRequest)) {
- chain.doFilter(request, response);
- return;
- }
+ /**
+ * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
+ * javax.servlet.ServletResponse, javax.servlet.FilterChain)
+ */
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
+ ServletException {
+ HttpServletResponse httpResponse = (HttpServletResponse) response;
- // Wrap request
- HttpServletRequest statelessRequest = new StatelessRequestWrapper(
- (HttpServletRequest) request, configuration);
+ // Test if the request is excluded
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ if (isExcluded(httpRequest)) {
+ chain.doFilter(request, response);
+ return;
+ }
- // Wrap response if necessary
- HttpServletResponse targetResponse = httpResponse;
+ // Wrap request
+ StatelessRequestWrapper statelessRequest = new StatelessRequestWrapper((HttpServletRequest) request,
+ configuration);
- BufferedHttpResponseWrapper bufferedResponse = null;
- if (configuration.isBufferingRequired) {
- bufferedResponse = new BufferedHttpResponseWrapper(httpResponse);
- targetResponse = bufferedResponse;
- }
+ // Wrap response if necessary
+ HttpServletResponse targetResponse = httpResponse;
- // Request processors
- if (configuration.requestProcessors != null
- && !configuration.requestProcessors.isEmpty()) {
- IRequestProcessor rp = null;
- for (int i = 0; i < configuration.requestProcessors.size(); i++) {
- rp = configuration.requestProcessors.get(i);
- try {
- rp.preRequest(statelessRequest, targetResponse);
- } catch (Exception e) {
- throw new IOException(e.getMessage());
- }
- }
- }
+ BufferedHttpResponseWrapper bufferedResponse = null;
+ if (Configuration.BUFFERING_FULL.equals(configuration.isBufferingRequired)) {
+ bufferedResponse = new BufferedHttpResponseWrapper(httpResponse);
+ targetResponse = bufferedResponse;
+ }else
+ if (Configuration.BUFFERING_HEADERS.equals(configuration.isBufferingRequired)) {
+ targetResponse = new HeaderBufferedHttpResponseWrapper(statelessRequest,httpResponse);
+ }
- // Proceed with request
- chain.doFilter(statelessRequest, targetResponse);
+ // Request processors
+ if (configuration.requestProcessors != null && !configuration.requestProcessors.isEmpty()) {
+ IRequestProcessor rp = null;
+ for (int i = 0; i < configuration.requestProcessors.size(); i++) {
+ rp = configuration.requestProcessors.get(i);
+ try {
+ rp.preRequest(statelessRequest, targetResponse);
+ } catch (Exception e) {
+ throw new IOException(e.getMessage());
+ }
+ }
+ }
- // Write session
- ((StatelessRequestWrapper) statelessRequest).writeSession(
- statelessRequest, httpResponse);
+ // Proceed with request
+ chain.doFilter(statelessRequest, targetResponse);
- // Request processors : post process.
- if (configuration.requestProcessors != null
- && !configuration.requestProcessors.isEmpty()) {
- IRequestProcessor rp = null;
- for (int i = configuration.requestProcessors.size() - 1; i >= 0; i--) {
- rp = configuration.requestProcessors.get(i);
- try {
- rp.postProcess(statelessRequest, targetResponse);
- } catch (Exception e) {
- throw new IOException(e.getMessage());
- }
- }
- }
+ // Write session
+ if (!statelessRequest.isSessionWritten()) {
+ statelessRequest.writeSession(statelessRequest, httpResponse);
+ }
- // Flush buffer if necessary
- if (bufferedResponse != null) {
- if (!bufferedResponse.performSend()) {
- bufferedResponse.flushBuffer();
- response.getOutputStream().write(bufferedResponse.getBuffer());
- response.flushBuffer();
- }
- }
- }
+ // Request processors : post process.
+ if (configuration.requestProcessors != null && !configuration.requestProcessors.isEmpty()) {
+ IRequestProcessor rp = null;
+ for (int i = configuration.requestProcessors.size() - 1; i >= 0; i--) {
+ rp = configuration.requestProcessors.get(i);
+ try {
+ rp.postProcess(statelessRequest, targetResponse);
+ } catch (Exception e) {
+ throw new IOException(e.getMessage());
+ }
+ }
+ }
- /**
- * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
- */
- public void init(FilterConfig filterConfig) throws ServletException {
- if (logger.isDebugEnabled()) {
- logger.debug(DEBUG_INIT);
- }
+ // Flush buffer if necessary
+ if (bufferedResponse != null) {
+ if (!bufferedResponse.performSend()) {
+ bufferedResponse.flushBuffer();
+ response.getOutputStream().write(bufferedResponse.getBuffer());
+ response.flushBuffer();
+ }
+ }
+ }
- // Get Servlet Context
- this.servletContext = filterConfig.getServletContext();
+ /**
+ * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
+ */
+ public void init(FilterConfig filterConfig) throws ServletException {
+ if (logger.isDebugEnabled()) {
+ logger.debug(DEBUG_INIT);
+ }
- // Configuration
- Properties globalProp = new Properties();
+ // Get Servlet Context
+ this.servletContext = filterConfig.getServletContext();
- // Try to load global configuration.
- String configLocation = filterConfig.getInitParameter(CONFIG_LOCATION);
- if (configLocation == null) {
- configLocation = CONFIG_LOCATION_DEFAULT;
- }
- try {
- globalProp.load(StatelessFilter.class
- .getResourceAsStream(configLocation));
- } catch (Exception e) {
- logger.warn(WARN_LOAD_CONF);
- // This is not fatal, will just use defaults.
- }
+ // Configuration
+ Properties globalProp = new Properties();
- // Enables Spring instantiation listener if Spring is available and
- // configured.
- if (SpringContextChecker.checkForSpring(servletContext)) {
+ // Try to load global configuration.
+ String configLocation = filterConfig.getInitParameter(CONFIG_LOCATION);
+ if (configLocation == null) {
+ configLocation = CONFIG_LOCATION_DEFAULT;
+ }
+ try {
+ globalProp.load(StatelessFilter.class.getResourceAsStream(configLocation));
+ } catch (Exception e) {
+ logger.warn(WARN_LOAD_CONF);
+ // This is not fatal, will just use defaults.
+ }
- logger.info("Enabling Spring instantiation listener"); //$NON-NLS-1$
+ // Enables Spring instantiation listener if Spring is available and
+ // configured.
+ if (SpringContextChecker.checkForSpring(servletContext)) {
- instantiationListener = new SpringObjectInstantiationListener();
- instantiationListener.setServletContext(servletContext);
- }
+ logger.info("Enabling Spring instantiation listener"); //$NON-NLS-1$
- // Load instantiation listener
- try {
- initInstantiationListener(globalProp);
- } catch (Exception e) {
- throw new ServletException(
- "Failed to load instantiation listener from /stateless.properties", //$NON-NLS-1$
- e);
- }
+ instantiationListener = new SpringObjectInstantiationListener();
+ instantiationListener.setServletContext(servletContext);
+ }
- // Load and init all plugins
+ // Load instantiation listener
+ try {
+ initInstantiationListener(globalProp);
+ } catch (Exception e) {
+ throw new ServletException("Failed to load instantiation listener from /stateless.properties", //$NON-NLS-1$
+ e);
+ }
- try {
- detectAndInitPlugins(CONFIG_PLUGIN_BACKEND, globalProp,
- IPlugin.TYPE_BACKEND);
- detectAndInitPlugins(CONFIG_PLUGIN_PROCESSOR, globalProp,
- IPlugin.TYPE_REQUEST_PROCESSOR);
+ // Load and init all plugins
- } catch (Exception e) {
- throw new ServletException(e);
- }
+ try {
+ detectAndInitPlugins(CONFIG_PLUGIN_BACKEND, globalProp, IPlugin.TYPE_BACKEND);
+ detectAndInitPlugins(CONFIG_PLUGIN_PROCESSOR, globalProp, IPlugin.TYPE_REQUEST_PROCESSOR);
- // Process attribute mapping
- initAttributeMapping(globalProp);
+ } catch (Exception e) {
+ throw new ServletException(e);
+ }
- // Read default backend
- initDefaultBackend(globalProp);
+ // Process attribute mapping
+ initAttributeMapping(globalProp);
- // Use dirty state
- initDirtyState(globalProp);
+ // Read default backend
+ initDefaultBackend(globalProp);
- // init the excluded pattern from the servlet config
- initExcludedPattern(filterConfig);
+ // Use dirty state
+ initDirtyState(globalProp);
- checkConfiguration();
- }
+ // Init Buffering mode
+ initBuffering(globalProp);
- private void checkConfiguration() throws ServletException {
- if (this.configuration.backends.size() == 0) {
- throw new ServletException(
- "No backend installed. Please add one (stateless-session for instance) in the classpath"); //$NON-NLS-1$
- }
- }
+ // init the excluded pattern from the servlet config
+ initExcludedPattern(filterConfig);
- private void initExcludedPattern(FilterConfig filterConfig) {
- String excludedPatternList = filterConfig
- .getInitParameter(PARAM_EXCLUDE_PATTERN_LIST);
- if (excludedPatternList != null) {
- String[] splittedExcludedPatternList = excludedPatternList
- .split(EXCLUDE_PATTERN_SEPARATOR);
- List<Pattern> patterns = new ArrayList<Pattern>();
- Pattern pattern = null;
- for (String element : splittedExcludedPatternList) {
- pattern = Pattern.compile(element);
- patterns.add(pattern);
- }
- this.excludePatterns = patterns;
- }
- }
+ checkConfiguration();
+ }
- private void detectAndInitPlugins(String propertyFile,
- Properties filterConfiguration, String type) throws Exception {
- Enumeration<URL> configurationURLs;
+ private void initBuffering(Properties globalProp) {
+ String buffering = globalProp.getProperty("buffering", Configuration.BUFFERING_FALSE);
+ applyBuffering(buffering, "Configuration");
+ }
- configurationURLs = StatelessFilter.class.getClassLoader()
- .getResources(propertyFile);
+ /**
+ * Change buffering mode if current mode is lower than requested.
+ *
+ * @param mode
+ */
+ private void applyBuffering(String mode, String source) {
+ if (Configuration.BUFFERING_FULL.equals(mode)
+ && !Configuration.BUFFERING_FULL.equals(configuration.isBufferingRequired)) {
+ configuration.isBufferingRequired = Configuration.BUFFERING_FULL;
+ if (logger.isInfoEnabled())
+ logger.info("Switching to buffering mode " + configuration.isBufferingRequired + " (" + source + ")");
+ } else if (Configuration.BUFFERING_HEADERS.equals(mode)
+ && Configuration.BUFFERING_FALSE.equals(configuration.isBufferingRequired)) {
+ configuration.isBufferingRequired = Configuration.BUFFERING_HEADERS;
+ if (logger.isInfoEnabled())
+ logger.info("Switching to buffering mode " + configuration.isBufferingRequired + " (" + source + ")");
+ }
- URL url = null;
- Properties pluginConfiguration = null;
- InputStream is = null;
- while (configurationURLs.hasMoreElements()) {
- url = configurationURLs.nextElement();
- if (logger.isDebugEnabled()) {
- logger.debug(DEBUG_PROCESSING + url.toString());
- }
+ }
- // Load plugin configuration
- pluginConfiguration = new Properties();
- is = url.openStream();
- pluginConfiguration.load(is);
- is.close();
+ /**
+ * Does some self tests to ensure configuration is valid
+ *
+ * @throws ServletException
+ */
+ private void checkConfiguration() throws ServletException {
+ if (this.configuration.backends.size() == 0) {
+ throw new ServletException(
+ "No backend installed. Please add one (stateless-session for instance) in the classpath"); //$NON-NLS-1$
+ }
+ }
- // Init plugin
- initPlugin(pluginConfiguration, filterConfiguration, type);
- }
+ private void initExcludedPattern(FilterConfig filterConfig) {
+ String excludedPatternList = filterConfig.getInitParameter(PARAM_EXCLUDE_PATTERN_LIST);
+ if (excludedPatternList != null) {
+ String[] splittedExcludedPatternList = excludedPatternList.split(EXCLUDE_PATTERN_SEPARATOR);
+ List<Pattern> patterns = new ArrayList<Pattern>();
+ Pattern pattern = null;
+ for (String element : splittedExcludedPatternList) {
+ pattern = Pattern.compile(element);
+ patterns.add(pattern);
+ }
+ this.excludePatterns = patterns;
+ }
+ }
- }
+ private void detectAndInitPlugins(String propertyFile, Properties filterConfiguration, String type)
+ throws Exception {
+ Enumeration<URL> configurationURLs;
- private void initAttributeMapping(Properties globalProp)
- throws ServletException {
- for (Object key : globalProp.keySet()) {
- String paramName = (String) key;
- if (paramName.startsWith(CONFIG_ATTRIBUTE_PREFIX)) {
- String attrName = paramName.substring(CONFIG_ATTRIBUTE_PREFIX
- .length());
- String backend = globalProp.getProperty(paramName);
- configuration.backendsAttributeMapping.put(attrName, backend);
+ configurationURLs = StatelessFilter.class.getClassLoader().getResources(propertyFile);
- // Ensure backend is available
- if (!configuration.backends.containsKey(backend)) {
- throw new ServletException(
- "Attributes are mapped on backend " + backend //$NON-NLS-1$
- + " but it is not installed."); //$NON-NLS-1$
- }
- }
- }
- }
+ URL url = null;
+ Properties pluginConfiguration = null;
+ InputStream is = null;
+ while (configurationURLs.hasMoreElements()) {
+ url = configurationURLs.nextElement();
+ if (logger.isDebugEnabled()) {
+ logger.debug(DEBUG_PROCESSING + url.toString());
+ }
- private void initDefaultBackend(Properties globalProp) {
- String defaultBack = globalProp.getProperty(CONFIG_DEFAULT_BACKEND);
- if (defaultBack != null) {
- if (configuration.backends.containsKey(defaultBack)) {
- configuration.defaultBackend = defaultBack;
- } else {
- if (logger.isWarnEnabled()) {
- logger.warn(WARN_BACKEND_NOT_FOUND1 + defaultBack
- + WARN_BACKEND_NOT_FOUND2);
- }
- // This is not fatal will use first backend.
- }
- }
- }
+ // Load plugin configuration
+ pluginConfiguration = new Properties();
+ is = url.openStream();
+ pluginConfiguration.load(is);
+ is.close();
- private void initDirtyState(Properties globalProp) {
- String useDirty = globalProp.getProperty(CONFIG_DIRTY);
- if (Boolean.parseBoolean(useDirty)) {
- configuration.useDirty = true;
- }
+ // Init plugin
+ initPlugin(pluginConfiguration, filterConfiguration, type);
+ }
- if (logger.isInfoEnabled()) {
- logger.info("Use dirty state: " + configuration.useDirty); //$NON-NLS-1$
- logger.info(INFO_DEFAULT_BACKEND + configuration.defaultBackend);
- }
- }
+ }
- /**
- * Get and create instantiation listener from configuration file.
- *
- * @param globalProp
- * @throws ClassNotFoundException
- * @throws InstantiationException
- * @throws IllegalAccessException
- */
+ private void initAttributeMapping(Properties globalProp) throws ServletException {
+ for (Object key : globalProp.keySet()) {
+ String paramName = (String) key;
+ if (paramName.startsWith(CONFIG_ATTRIBUTE_PREFIX)) {
+ String attrName = paramName.substring(CONFIG_ATTRIBUTE_PREFIX.length());
+ String backend = globalProp.getProperty(paramName);
+ configuration.backendsAttributeMapping.put(attrName, backend);
- private void initInstantiationListener(Properties globalProp)
- throws ClassNotFoundException, InstantiationException,
- IllegalAccessException {
- String clazz = globalProp.getProperty(CONFIG_INSTANTIATION_LISTENER);
- if (!StringUtils.isEmpty(clazz)) {
- @SuppressWarnings("unchecked")
- Class<IObjectInstantiationListener> backClazz = (Class<IObjectInstantiationListener>) Class
- .forName(clazz);
+ // Ensure backend is available
+ if (!configuration.backends.containsKey(backend)) {
+ throw new ServletException("Attributes are mapped on backend " + backend //$NON-NLS-1$
+ + " but it is not installed."); //$NON-NLS-1$
+ }
+ }
+ }
+ }
- // Create new instance
- instantiationListener = backClazz.newInstance();
- instantiationListener.setServletContext(servletContext);
- logger.info("Using instantiation listener {}", clazz); //$NON-NLS-1$
- }
- }
+ private void initDefaultBackend(Properties globalProp) {
+ String defaultBack = globalProp.getProperty(CONFIG_DEFAULT_BACKEND);
+ if (defaultBack != null) {
+ if (configuration.backends.containsKey(defaultBack)) {
+ configuration.defaultBackend = defaultBack;
+ } else {
+ if (logger.isWarnEnabled()) {
+ logger.warn(WARN_BACKEND_NOT_FOUND1 + defaultBack + WARN_BACKEND_NOT_FOUND2);
+ }
+ // This is not fatal will use first backend.
+ }
+ }
+ }
- /**
- * Does backend initialization.
- *
- * @param backendProperties
- * @param globalProperties
- * @throws Exception
- */
- @SuppressWarnings("unchecked")
- private void initPlugin(Properties backendProperties,
- Properties globalProperties, String type) throws Exception {
+ private void initDirtyState(Properties globalProp) {
+ String useDirty = globalProp.getProperty(CONFIG_DIRTY);
+ if (Boolean.parseBoolean(useDirty)) {
+ configuration.useDirty = true;
+ }
- IPlugin plugin = null;
+ if (logger.isInfoEnabled()) {
+ logger.info("Use dirty state: " + configuration.useDirty); //$NON-NLS-1$
+ logger.info(INFO_DEFAULT_BACKEND + configuration.defaultBackend);
+ }
+ }
- String location = CONFIG_PLUGIN_BACKEND_IMPL;
- if (IPlugin.TYPE_REQUEST_PROCESSOR.equals(type)) {
- location = CONFIG_PLUGIN_PROCESSOR_IMPL;
- }
+ /**
+ * Get and create instantiation listener from configuration file.
+ *
+ * @param globalProp
+ * @throws ClassNotFoundException
+ * @throws InstantiationException
+ * @throws IllegalAccessException
+ */
- if (instantiationListener != null) {
- // Try to create class using listener
- plugin = (IPlugin) instantiationListener
- .getInstance((String) backendProperties.get(location));
- }
+ private void initInstantiationListener(Properties globalProp) throws ClassNotFoundException,
+ InstantiationException, IllegalAccessException {
+ String clazz = globalProp.getProperty(CONFIG_INSTANTIATION_LISTENER);
+ if (!StringUtils.isEmpty(clazz)) {
+ @SuppressWarnings("unchecked")
+ Class<IObjectInstantiationListener> backClazz = (Class<IObjectInstantiationListener>) Class.forName(clazz);
- if (plugin == null) {
- // backend is still null, try to create it.
+ // Create new instance
+ instantiationListener = backClazz.newInstance();
+ instantiationListener.setServletContext(servletContext);
+ logger.info("Using instantiation listener {}", clazz); //$NON-NLS-1$
+ }
+ }
- // Get class
- String clazz = (String) backendProperties.get(location);
- Class<IPlugin> backClazz = (Class<IPlugin>) Class.forName(clazz);
+ /**
+ * Does backend initialization.
+ *
+ * @param backendProperties
+ * @param globalProperties
+ * @throws Exception
+ */
+ @SuppressWarnings("unchecked")
+ private void initPlugin(Properties backendProperties, Properties globalProperties, String type) throws Exception {
- // Create new instance
- plugin = backClazz.newInstance();
- }
+ IPlugin plugin = null;
- // Load configuration from global.
- HashMap<String, String> conf = new HashMap<String, String>();
- String paramName = null;
- String prefix = null;
- String attrName = null;
- for (Object key : globalProperties.keySet()) {
- paramName = (String) key;
- prefix = plugin.getId() + DOT;
- if (paramName.startsWith(prefix)) {
- attrName = paramName.substring(prefix.length());
- conf.put(attrName, globalProperties.getProperty(paramName));
- }
- }
+ String location = CONFIG_PLUGIN_BACKEND_IMPL;
+ if (IPlugin.TYPE_REQUEST_PROCESSOR.equals(type)) {
+ location = CONFIG_PLUGIN_PROCESSOR_IMPL;
+ }
- // Init backend
- plugin.init(conf);
+ if (instantiationListener != null) {
+ // Try to create class using listener
+ plugin = (IPlugin) instantiationListener.getInstance((String) backendProperties.get(location));
+ }
- // Toggle buffering on if necessary
- if (plugin.isBufferingRequired()) {
- configuration.isBufferingRequired = true;
- if (logger.isInfoEnabled()) {
- logger.info("Plugin " + plugin.getId() + INFO_BUFFERING);
- }
- }
+ if (plugin == null) {
+ // backend is still null, try to create it.
- // Specific handling for request processors
- if (IPlugin.TYPE_REQUEST_PROCESSOR.equals(type)) {
- configuration.requestProcessors.add((IRequestProcessor) plugin);
+ // Get class
+ String clazz = (String) backendProperties.get(location);
+ Class<IPlugin> backClazz = (Class<IPlugin>) Class.forName(clazz);
- // Some info output.
- if (logger.isInfoEnabled()) {
- logger.info(INFO_REQUEST_PROCESSOR + plugin.getId()
- + INFO_READY);
- }
- }
+ // Create new instance
+ plugin = backClazz.newInstance();
+ }
- // Specific handling for backends
- if (IPlugin.TYPE_BACKEND.equals(type)) {
- configuration.backends
- .put(plugin.getId(), (ISessionBackend) plugin);
+ // Load configuration from global.
+ HashMap<String, String> conf = new HashMap<String, String>();
+ String paramName = null;
+ String prefix = null;
+ String attrName = null;
+ for (Object key : globalProperties.keySet()) {
+ paramName = (String) key;
+ prefix = plugin.getId() + DOT;
+ if (paramName.startsWith(prefix)) {
+ attrName = paramName.substring(prefix.length());
+ conf.put(attrName, globalProperties.getProperty(paramName));
+ }
+ }
- // Some info output.
- if (logger.isInfoEnabled()) {
- logger.info(INFO_BACKEND + plugin.getId() + INFO_READY);
- }
+ // Init backend
+ plugin.init(conf);
- // First backend is default.
- if (StringUtils.isEmpty(configuration.defaultBackend)) {
- configuration.defaultBackend = plugin.getId();
- }
- }
+ // Toggle buffering on if necessary
+ applyBuffering(plugin.isBufferingRequired(), plugin.getId());
- }
+ // Specific handling for request processors
+ if (IPlugin.TYPE_REQUEST_PROCESSOR.equals(type)) {
+ configuration.requestProcessors.add((IRequestProcessor) plugin);
- /**
- * Check if this request is excluded from the process.
- *
- * @param httpRequest
- * HTTP request
- * @return true if the URI requested match an excluded pattern
- */
- private boolean isExcluded(HttpServletRequest httpRequest) {
- if (this.excludePatterns == null) {
- return false;
- }
+ // Some info output.
+ if (logger.isInfoEnabled()) {
+ logger.info(INFO_REQUEST_PROCESSOR + plugin.getId() + INFO_READY);
+ }
+ }
- String uri = httpRequest.getRequestURI();
- if (logger.isDebugEnabled()) {
- logger.debug("Check URI : " + uri);
- }
+ // Specific handling for backends
+ if (IPlugin.TYPE_BACKEND.equals(type)) {
+ configuration.backends.put(plugin.getId(), (ISessionBackend) plugin);
- try {
- uri = new URI(uri).normalize().toString();
+ // Some info output.
+ if (logger.isInfoEnabled()) {
+ logger.info(INFO_BACKEND + plugin.getId() + INFO_READY);
+ }
- for (Pattern pattern : this.excludePatterns) {
- if (pattern.matcher(uri).matches()) {
- if (logger.isInfoEnabled()) {
- logger.info("URI excluded : " + uri);
- }
- return true;
- }
- }
+ // First backend is default.
+ if (StringUtils.isEmpty(configuration.defaultBackend)) {
+ configuration.defaultBackend = plugin.getId();
+ }
+ }
- } catch (URISyntaxException e) {
- logger.warn(
- "The following URI has a bad syntax. The request will be processed by the filter. URI : "
- + uri, e);
- }
+ }
- return false;
- }
+ /**
+ * Check if this request is excluded from the process.
+ *
+ * @param httpRequest
+ * HTTP request
+ * @return true if the URI requested match an excluded pattern
+ */
+ private boolean isExcluded(HttpServletRequest httpRequest) {
+ if (this.excludePatterns == null) {
+ return false;
+ }
+
+ String uri = httpRequest.getRequestURI();
+ if (logger.isDebugEnabled()) {
+ logger.debug("Check URI : " + uri);
+ }
+
+ try {
+ uri = new URI(uri).normalize().toString();
+
+ for (Pattern pattern : this.excludePatterns) {
+ if (pattern.matcher(uri).matches()) {
+ if (logger.isInfoEnabled()) {
+ logger.info("URI excluded : " + uri);
+ }
+ return true;
+ }
+ }
+
+ } catch (URISyntaxException e) {
+ logger.warn(
+ "The following URI has a bad syntax. The request will be processed by the filter. URI : " + uri, e);
+ }
+
+ return false;
+ }
}
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java 2011-06-15 10:39:12 UTC (rev 81)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java 2011-07-24 21:51:13 UTC (rev 82)
@@ -39,7 +39,6 @@
* @author Nicolas Richeton - Capgemini
*
*/
-@SuppressWarnings("deprecation")
public class StatelessSession implements HttpSession, Serializable {
final private static String SECURE_ALGORITHM = "SHA1PRNG"; //$NON-NLS-1$
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapper.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapper.java 2011-06-15 10:39:12 UTC (rev 81)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapper.java 2011-07-24 21:51:13 UTC (rev 82)
@@ -42,269 +42,258 @@
*
*/
public class StatelessRequestWrapper extends HttpServletRequestWrapper {
- private static final String INFO_USES = "{} uses {}"; //$NON-NLS-1$
- private static final String INFO_USES_DEFAULT = "{} uses default {}"; //$NON-NLS-1$
- // private static final String WARN_SESSION_SYNC = "Session are not synchronized between backends. Reseting..."; //$NON-NLS-1$
- Configuration backends = null;
- Logger logger = LoggerFactory.getLogger(StatelessRequestWrapper.class);
- HttpServletRequest originalRequest = null;
+ private static final String INFO_USES = "{} uses {}"; //$NON-NLS-1$
+ private static final String INFO_USES_DEFAULT = "{} uses default {}"; //$NON-NLS-1$
+ // private static final String WARN_SESSION_SYNC = "Session are not synchronized between backends. Reseting..."; //$NON-NLS-1$
+ Configuration backends = null;
+ Logger logger = LoggerFactory.getLogger(StatelessRequestWrapper.class);
+ HttpServletRequest originalRequest = null;
- StatelessSession session = null;
+ StatelessSession session = null;
+ private boolean sessionWritten;
- /**
- * Create a new request wrapper.
- *
- * @param request
- * @param backends
- */
- public StatelessRequestWrapper(HttpServletRequest request,
- Configuration backends) {
- super(request);
- originalRequest = request;
- this.backends = backends;
- }
+ public boolean isSessionWritten() {
+ return sessionWritten;
+ }
- /**
- * Returns real server session.
- *
- * @return
- */
- public HttpSession getServerSession() {
- return super.getSession();
- }
+ /**
+ * Create a new request wrapper.
+ *
+ * @param request
+ * @param backends
+ */
+ public StatelessRequestWrapper(HttpServletRequest request, Configuration backends) {
+ super(request);
+ originalRequest = request;
+ this.backends = backends;
+ }
- /**
- * (non-Javadoc)
- *
- * @see javax.servlet.http.HttpServletRequestWrapper#getSession()
- */
- @Override
- public HttpSession getSession() {
- if (session == null) {
- try {
- session = createSession();
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException(e);
- }
- }
- return session;
- }
+ /**
+ * Returns real server session.
+ *
+ * @return
+ */
+ public HttpSession getServerSession() {
+ return super.getSession();
+ }
- /**
- * (non-Javadoc)
- *
- * @see javax.servlet.http.HttpServletRequestWrapper#getSession(boolean)
- */
- @Override
- public HttpSession getSession(boolean create) {
- if (create) {
- return getSession();
- }
+ /**
+ * (non-Javadoc)
+ *
+ * @see javax.servlet.http.HttpServletRequestWrapper#getSession()
+ */
+ @Override
+ public HttpSession getSession() {
+ if (session == null) {
+ try {
+ session = createSession();
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return session;
+ }
- if (session == null) {
- try {
- session = restoreSession();
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException(e);
- }
- }
+ /**
+ * (non-Javadoc)
+ *
+ * @see javax.servlet.http.HttpServletRequestWrapper#getSession(boolean)
+ */
+ @Override
+ public HttpSession getSession(boolean create) {
+ if (create) {
+ return getSession();
+ }
- return session;
- }
+ if (session == null) {
+ try {
+ session = restoreSession();
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ }
- /**
- * Stores session in backends
- *
- * @param myrequest
- * @param myresponse
- * @throws IOException
- */
- public void writeSession(HttpServletRequest myrequest,
- HttpServletResponse myresponse) throws IOException {
+ return session;
+ }
- // If there is a session (session requested by the application)
- if (session != null) {
+ /**
+ * Stores session in backends
+ *
+ * @param myrequest
+ * @param myresponse
+ * @throws IOException
+ */
+ public void writeSession(HttpServletRequest myrequest, HttpServletResponse myresponse) throws IOException {
- // Session has changed ?
- if (backends.useDirty && !session.isDirty()) {
- logger.info("Session has not changed."); //$NON-NLS-1$
- return;
- }
+ // If there is a session (session requested by the application)
+ if (session != null) {
- long requestId = System.currentTimeMillis();
- session.setNew(false);
+ // Session has changed ?
+ if (backends.useDirty && !session.isDirty()) {
+ logger.info("Session has not changed."); //$NON-NLS-1$
+ return;
+ }
- // Dispatch attributes between backends according to configuration
+ long requestId = System.currentTimeMillis();
+ session.setNew(false);
- // Session attributes
- Map<String, Object> sessionAttributes = session.getContent();
- // Session attributes which were modified during the request
- List<String> modifiedAttributes = session.getDirtyAttributes();
+ // Dispatch attributes between backends according to configuration
- // Backends flagged as dirty during dispatch
- List<String> modifiedBackends = new ArrayList<String>();
+ // Session attributes
+ Map<String, Object> sessionAttributes = session.getContent();
+ // Session attributes which were modified during the request
+ List<String> modifiedAttributes = session.getDirtyAttributes();
- // Remaining modified attributes to process
- List<String> remainingModifiedAttributes = new ArrayList<String>(
- modifiedAttributes);
- // Attributes for each backend
- Map<String, ISessionData> attributesDispatched = new HashMap<String, ISessionData>();
- Map<String, List<String>> modifiedAttributesDispatched = new HashMap<String, List<String>>();
+ // Backends flagged as dirty during dispatch
+ List<String> modifiedBackends = new ArrayList<String>();
- for (String name : sessionAttributes.keySet()) {
- if (isAttributeMapped(name)) {
- getBackendSessionData(attributesDispatched,
- backends.backendsAttributeMapping.get(name),
- requestId).getContent().put(name,
- sessionAttributes.get(name));
+ // Remaining modified attributes to process
+ List<String> remainingModifiedAttributes = new ArrayList<String>(modifiedAttributes);
+ // Attributes for each backend
+ Map<String, ISessionData> attributesDispatched = new HashMap<String, ISessionData>();
+ Map<String, List<String>> modifiedAttributesDispatched = new HashMap<String, List<String>>();
- setModified(modifiedBackends, modifiedAttributes, name);
+ for (String name : sessionAttributes.keySet()) {
+ if (isAttributeMapped(name)) {
+ getBackendSessionData(attributesDispatched, backends.backendsAttributeMapping.get(name), requestId)
+ .getContent().put(name, sessionAttributes.get(name));
- logger.info(INFO_USES, name,
- backends.backendsAttributeMapping.get(name));
+ setModified(modifiedBackends, modifiedAttributes, name);
-...
[truncated message content] |
|
From: <nri...@us...> - 2011-06-15 10:39:18
|
Revision: 81
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=81&view=rev
Author: nricheton
Date: 2011-06-15 10:39:12 +0000 (Wed, 15 Jun 2011)
Log Message:
-----------
Added comments
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2011-03-19 15:07:44 UTC (rev 80)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2011-06-15 10:39:12 UTC (rev 81)
@@ -32,15 +32,52 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+/**
+ * An helper class for backend implementations which are using cookies to store
+ * data.
+ *
+ * <p>
+ * Includes standard cookies attributes parameters (domain / name, maxAge, path)
+ * and implements cookie creation and reading.
+ *
+ * <p>
+ * If cookie data is over 3k, it is automatically split into several cookies.
+ * <p>
+ * Default values are :
+ * <ul>
+ * <li>cookieName : "session"</li>
+ * <li>domain : default</li>
+ * <li>maxAge : unlimited</li>
+ * <li>path : "/"</li>
+ * </ul>
+ *
+ * @author Nicolas Richeton
+ *
+ */
public abstract class CookieBackendSupport implements ISessionBackend {
+ /**
+ * If cookie data exceed this value, multiple cookie are created.
+ */
private static final int COOKIE_MAX_SIZE = 3000;
private static Logger logger = LoggerFactory
.getLogger(CookieBackendSupport.class);
+
+ /* Constants used in properties */
private static final String PARAM_COOKIEDOMAIN = "cookiedomain"; //$NON-NLS-1$
private static final String PARAM_COOKIEMAXAGE = "cookiemaxage"; //$NON-NLS-1$
private static final String PARAM_COOKIENAME = "cookiename"; //$NON-NLS-1$
private static final String PARAM_COOKIEPATH = "cookiepath"; //$NON-NLS-1$
+
+ /**
+ * Constant used to store the number of cookie segment within a single
+ * request. This information is used for cleaning.
+ *
+ * <p>Constant value depends of the cookie name.
+ * @see CookieBackendSupport#setCookieName(String)
+ */
private String ATTR_COUNT = "stateless.session.count"; //$NON-NLS-1$
+
+ /* Default values */
protected String cookieName = "session"; //$NON-NLS-1$
protected String domain = null;
protected Integer maxAge = null;
@@ -57,24 +94,30 @@
abstract public String getId();
/**
- * Implements cookie name configuration.
+ * Read cookie configuration : name, path, domain and maxAge.
*
* @see net.sourceforge.statelessfilter.backend.ISessionBackend#init(java.util.Map)
*/
public void init(Map<String, String> config) throws Exception {
+ // Name
String name = config.get(PARAM_COOKIENAME);
if (!StringUtils.isEmpty(name)) {
setCookieName(name);
}
+ // Path
String path = config.get(PARAM_COOKIEPATH);
if (!StringUtils.isEmpty(path)) {
this.path = path;
}
+
+ // Domain
String domain = config.get(PARAM_COOKIEDOMAIN);
if (!StringUtils.isEmpty(domain)) {
this.domain = domain;
}
+
+ // MaxAge
String maxAge = config.get(PARAM_COOKIEMAXAGE);
if (!StringUtils.isEmpty(maxAge)) {
this.maxAge = new Integer(Integer.parseInt(maxAge));
@@ -83,6 +126,9 @@
}
/**
+ * Always true for cookies since we need to create cookie at the end of the
+ * request, when data has already been sent.
+ *
* @see net.sourceforge.statelessfilter.backend.ISessionBackend#isBufferingRequired()
*/
public boolean isBufferingRequired() {
@@ -94,9 +140,10 @@
*/
abstract public ISessionData restore(HttpServletRequest request);
-
/**
- * @see net.sourceforge.statelessfilter.backend.ISessionBackend#save(net.sourceforge.statelessfilter.backend.ISessionData, java.util.List, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+ * @see net.sourceforge.statelessfilter.backend.ISessionBackend#save(net.sourceforge.statelessfilter.backend.ISessionData,
+ * java.util.List, javax.servlet.http.HttpServletRequest,
+ * javax.servlet.http.HttpServletResponse)
*/
abstract public void save(ISessionData session,
List<String> dirtyAttributes, HttpServletRequest request,
@@ -135,6 +182,13 @@
return null;
}
+ /**
+ * Read raw data from cookie.
+ *
+ * @param request
+ * @param response
+ * @return
+ */
protected byte[] getCookieData(HttpServletRequest request,
HttpServletResponse response) {
int i = 0;
@@ -156,8 +210,11 @@
}
/**
- * Set cookie. Data is split in several cookies if it exceeds max cookie
- * length.
+ * Set raw data in a cookie. Data is split in several cookies if it exceeds
+ * max cookie length.
+ * <p>
+ * Also ensure that the reponse cannot be cached (Cache-control header set
+ * to private/no-cache/no-store/must-revalidate)
*
* @param request
* @param response
@@ -166,8 +223,9 @@
protected void setCookieData(HttpServletRequest request,
HttpServletResponse response, byte[] data) {
// As soon as we send a session cookie, the response must not be cached.
- response.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate");
-
+ response.setHeader("Cache-Control",
+ "private, no-cache, no-store, must-revalidate");
+
String encoded = StringUtils.EMPTY;
if (data != null) {
encoded = new String(Base64.encodeBase64(data));
@@ -198,12 +256,17 @@
response.addCookie(c);
i++;
}
-
-
+
}
+ /**
+ * Set the name of the cookie and update internal values accordingly.
+ * @param cookieName
+ */
protected void setCookieName(String cookieName) {
this.cookieName = cookieName;
+
+ // Update constant to inclue cookie name.
ATTR_COUNT = "stateless." + cookieName + ".count"; //$NON-NLS-1$ //$NON-NLS-2$
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-03-19 15:07:50
|
Revision: 80
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=80&view=rev
Author: nricheton
Date: 2011-03-19 15:07:44 +0000 (Sat, 19 Mar 2011)
Log Message:
-----------
[maven-release-plugin] prepare for next development iteration
Modified Paths:
--------------
trunk/pom.xml
trunk/stateless-cookie-aes/pom.xml
trunk/stateless-cookie-aes-json/pom.xml
trunk/stateless-cookie-plain/pom.xml
trunk/stateless-core/pom.xml
trunk/stateless-memcache/pom.xml
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-session/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-03-19 15:07:27 UTC (rev 79)
+++ trunk/pom.xml 2011-03-19 15:07:44 UTC (rev 80)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<inceptionYear>2009</inceptionYear>
<mailingLists>
<mailingList>
@@ -49,9 +49,9 @@
</developer>
</developers>
<scm>
- <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.7</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.7</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.7</url>
+ <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/trunk/</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-03-19 15:07:27 UTC (rev 79)
+++ trunk/stateless-cookie-aes/pom.xml 2011-03-19 15:07:44 UTC (rev 80)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes</artifactId>
<name>Store: AES cookie</name>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-03-19 15:07:27 UTC (rev 79)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-03-19 15:07:44 UTC (rev 80)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes-json</artifactId>
<name>Store: AES+JSON cookie</name>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-03-19 15:07:27 UTC (rev 79)
+++ trunk/stateless-cookie-plain/pom.xml 2011-03-19 15:07:44 UTC (rev 80)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-plain</artifactId>
<name>Store: Plain cookie</name>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-03-19 15:07:27 UTC (rev 79)
+++ trunk/stateless-core/pom.xml 2011-03-19 15:07:44 UTC (rev 80)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-03-19 15:07:27 UTC (rev 79)
+++ trunk/stateless-memcache/pom.xml 2011-03-19 15:07:44 UTC (rev 80)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-03-19 15:07:27 UTC (rev 79)
+++ trunk/stateless-processor-cookie/pom.xml 2011-03-19 15:07:44 UTC (rev 80)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<description>Persist request attributes to a cookie.
id: processor-cookie</description>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-03-19 15:07:27 UTC (rev 79)
+++ trunk/stateless-session/pom.xml 2011-03-19 15:07:44 UTC (rev 80)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7</version>
+ <version>0.8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-03-19 15:07:33
|
Revision: 79
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=79&view=rev
Author: nricheton
Date: 2011-03-19 15:07:27 +0000 (Sat, 19 Mar 2011)
Log Message:
-----------
[maven-scm] copy for tag stateless-parent-0.7
Added Paths:
-----------
tags/stateless-parent-0.7/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-03-19 15:07:08
|
Revision: 78
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=78&view=rev
Author: nricheton
Date: 2011-03-19 15:07:02 +0000 (Sat, 19 Mar 2011)
Log Message:
-----------
[maven-release-plugin] prepare release stateless-parent-0.7
Modified Paths:
--------------
trunk/pom.xml
trunk/stateless-cookie-aes/pom.xml
trunk/stateless-cookie-aes-json/pom.xml
trunk/stateless-cookie-plain/pom.xml
trunk/stateless-core/pom.xml
trunk/stateless-memcache/pom.xml
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-session/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-03-18 16:50:39 UTC (rev 77)
+++ trunk/pom.xml 2011-03-19 15:07:02 UTC (rev 78)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<inceptionYear>2009</inceptionYear>
<mailingLists>
<mailingList>
@@ -49,9 +49,9 @@
</developer>
</developers>
<scm>
- <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/trunk/</url>
+ <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.7</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.7</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.7</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-03-18 16:50:39 UTC (rev 77)
+++ trunk/stateless-cookie-aes/pom.xml 2011-03-19 15:07:02 UTC (rev 78)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes</artifactId>
<name>Store: AES cookie</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-03-18 16:50:39 UTC (rev 77)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-03-19 15:07:02 UTC (rev 78)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes-json</artifactId>
<name>Store: AES+JSON cookie</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-03-18 16:50:39 UTC (rev 77)
+++ trunk/stateless-cookie-plain/pom.xml 2011-03-19 15:07:02 UTC (rev 78)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-plain</artifactId>
<name>Store: Plain cookie</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-03-18 16:50:39 UTC (rev 77)
+++ trunk/stateless-core/pom.xml 2011-03-19 15:07:02 UTC (rev 78)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-03-18 16:50:39 UTC (rev 77)
+++ trunk/stateless-memcache/pom.xml 2011-03-19 15:07:02 UTC (rev 78)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-03-18 16:50:39 UTC (rev 77)
+++ trunk/stateless-processor-cookie/pom.xml 2011-03-19 15:07:02 UTC (rev 78)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<description>Persist request attributes to a cookie.
id: processor-cookie</description>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-03-18 16:50:39 UTC (rev 77)
+++ trunk/stateless-session/pom.xml 2011-03-19 15:07:02 UTC (rev 78)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.7</version>
<scope>compile</scope>
</dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-03-18 16:50:46
|
Revision: 77
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=77&view=rev
Author: nricheton
Date: 2011-03-18 16:50:39 +0000 (Fri, 18 Mar 2011)
Log Message:
-----------
Fix cache issues
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2011-02-24 13:10:32 UTC (rev 76)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2011-03-18 16:50:39 UTC (rev 77)
@@ -165,6 +165,9 @@
*/
protected void setCookieData(HttpServletRequest request,
HttpServletResponse response, byte[] data) {
+ // As soon as we send a session cookie, the response must not be cached.
+ response.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate");
+
String encoded = StringUtils.EMPTY;
if (data != null) {
encoded = new String(Base64.encodeBase64(data));
@@ -195,6 +198,8 @@
response.addCookie(c);
i++;
}
+
+
}
protected void setCookieName(String cookieName) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-24 13:10:39
|
Revision: 76
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=76&view=rev
Author: nricheton
Date: 2011-02-24 13:10:32 +0000 (Thu, 24 Feb 2011)
Log Message:
-----------
[maven-release-plugin] prepare for next development iteration
Modified Paths:
--------------
trunk/pom.xml
trunk/stateless-cookie-aes/pom.xml
trunk/stateless-cookie-aes-json/pom.xml
trunk/stateless-cookie-plain/pom.xml
trunk/stateless-core/pom.xml
trunk/stateless-memcache/pom.xml
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-session/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-02-24 13:10:19 UTC (rev 75)
+++ trunk/pom.xml 2011-02-24 13:10:32 UTC (rev 76)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<inceptionYear>2009</inceptionYear>
<mailingLists>
<mailingList>
@@ -49,9 +49,9 @@
</developer>
</developers>
<scm>
- <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.6.1</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.6.1</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.6.1</url>
+ <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/trunk/</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-02-24 13:10:19 UTC (rev 75)
+++ trunk/stateless-cookie-aes/pom.xml 2011-02-24 13:10:32 UTC (rev 76)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes</artifactId>
<name>Store: AES cookie</name>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-02-24 13:10:19 UTC (rev 75)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-02-24 13:10:32 UTC (rev 76)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes-json</artifactId>
<name>Store: AES+JSON cookie</name>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-02-24 13:10:19 UTC (rev 75)
+++ trunk/stateless-cookie-plain/pom.xml 2011-02-24 13:10:32 UTC (rev 76)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-plain</artifactId>
<name>Store: Plain cookie</name>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-02-24 13:10:19 UTC (rev 75)
+++ trunk/stateless-core/pom.xml 2011-02-24 13:10:32 UTC (rev 76)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-02-24 13:10:19 UTC (rev 75)
+++ trunk/stateless-memcache/pom.xml 2011-02-24 13:10:32 UTC (rev 76)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-02-24 13:10:19 UTC (rev 75)
+++ trunk/stateless-processor-cookie/pom.xml 2011-02-24 13:10:32 UTC (rev 76)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<description>Persist request attributes to a cookie.
id: processor-cookie</description>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-02-24 13:10:19 UTC (rev 75)
+++ trunk/stateless-session/pom.xml 2011-02-24 13:10:32 UTC (rev 76)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6.1</version>
+ <version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-24 13:10:25
|
Revision: 75
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=75&view=rev
Author: nricheton
Date: 2011-02-24 13:10:19 +0000 (Thu, 24 Feb 2011)
Log Message:
-----------
[maven-scm] copy for tag stateless-parent-0.6.1
Added Paths:
-----------
tags/stateless-parent-0.6.1/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-24 13:10:07
|
Revision: 74
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=74&view=rev
Author: nricheton
Date: 2011-02-24 13:10:00 +0000 (Thu, 24 Feb 2011)
Log Message:
-----------
[maven-release-plugin] prepare release stateless-parent-0.6.1
Modified Paths:
--------------
trunk/pom.xml
trunk/stateless-cookie-aes/pom.xml
trunk/stateless-cookie-aes-json/pom.xml
trunk/stateless-cookie-plain/pom.xml
trunk/stateless-core/pom.xml
trunk/stateless-memcache/pom.xml
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-session/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-02-24 13:08:31 UTC (rev 73)
+++ trunk/pom.xml 2011-02-24 13:10:00 UTC (rev 74)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<inceptionYear>2009</inceptionYear>
<mailingLists>
<mailingList>
@@ -49,9 +49,9 @@
</developer>
</developers>
<scm>
- <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/trunk/</url>
+ <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.6.1</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.6.1</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.6.1</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-02-24 13:08:31 UTC (rev 73)
+++ trunk/stateless-cookie-aes/pom.xml 2011-02-24 13:10:00 UTC (rev 74)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes</artifactId>
<name>Store: AES cookie</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-02-24 13:08:31 UTC (rev 73)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-02-24 13:10:00 UTC (rev 74)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes-json</artifactId>
<name>Store: AES+JSON cookie</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-02-24 13:08:31 UTC (rev 73)
+++ trunk/stateless-cookie-plain/pom.xml 2011-02-24 13:10:00 UTC (rev 74)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-plain</artifactId>
<name>Store: Plain cookie</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-02-24 13:08:31 UTC (rev 73)
+++ trunk/stateless-core/pom.xml 2011-02-24 13:10:00 UTC (rev 74)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-02-24 13:08:31 UTC (rev 73)
+++ trunk/stateless-memcache/pom.xml 2011-02-24 13:10:00 UTC (rev 74)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-02-24 13:08:31 UTC (rev 73)
+++ trunk/stateless-processor-cookie/pom.xml 2011-02-24 13:10:00 UTC (rev 74)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<description>Persist request attributes to a cookie.
id: processor-cookie</description>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-02-24 13:08:31 UTC (rev 73)
+++ trunk/stateless-session/pom.xml 2011-02-24 13:10:00 UTC (rev 74)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.7-SNAPSHOT</version>
+ <version>0.6.1</version>
<scope>compile</scope>
</dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-24 13:08:37
|
Revision: 73
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=73&view=rev
Author: nricheton
Date: 2011-02-24 13:08:31 +0000 (Thu, 24 Feb 2011)
Log Message:
-----------
https://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=23
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java
Added Paths:
-----------
trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/filter/Bug23Test.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java 2011-02-23 17:16:06 UTC (rev 72)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java 2011-02-24 13:08:31 UTC (rev 73)
@@ -41,7 +41,9 @@
*/
@SuppressWarnings("deprecation")
public class StatelessSession implements HttpSession, Serializable {
- final private static String SECURE_ALGORITHM = "SHA1PRNG"; //$NON-NLS-1$
+ final private static String SECURE_ALGORITHM = "SHA1PRNG"; //$NON-NLS-1$
+
+ final private static String NULL_VALUE = "net.sourceforge.statelessfilter.session.NullValue";
/**
* Generated serial ID
*/
@@ -61,17 +63,16 @@
private volatile List<String> modifiedAttributes = new Vector<String>();
/**
- * Were this session properties (validity, maxInactiveInterval) modified during the
- * current request.
+ * Were this session properties (validity, maxInactiveInterval) modified
+ * during the current request.
*/
private volatile boolean propertyDirty = false;
-
+
/**
- * Was this session modified during the current request.
+ * Was this session modified during the current request.
*/
private volatile boolean dirty = false;
-
private final StatelessRequestWrapper request;
private boolean valid;
@@ -88,7 +89,13 @@
* @see javax.servlet.http.HttpSession#getAttribute(java.lang.String)
*/
public Object getAttribute(String name) {
- return content.get(name);
+ Object result = content.get(name);
+
+ if (result instanceof String && NULL_VALUE.equals(result)) {
+ result = null;
+ }
+
+ return result;
}
/**
@@ -162,7 +169,7 @@
*/
@Deprecated
public Object getValue(String name) {
- return content.get(name);
+ return getAttribute(name);
}
/**
@@ -264,8 +271,7 @@
*/
@Deprecated
public void putValue(String name, Object value) {
- content.put(name, value);
- setAttributeDirty(name);
+ setAttribute(name, value);
}
/**
@@ -282,8 +288,7 @@
*/
@Deprecated
public void removeValue(String name) {
- content.remove(name);
- setAttributeDirty(name);
+ removeAttribute(name);
}
/**
@@ -291,7 +296,13 @@
* java.lang.Object)
*/
public void setAttribute(String name, Object value) {
- content.put(name, value);
+ Object toInsert = value;
+
+ if (toInsert == null) {
+ toInsert = NULL_VALUE;
+ }
+
+ content.put(name, toInsert);
setAttributeDirty(name);
}
Added: trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/filter/Bug23Test.java
===================================================================
--- trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/filter/Bug23Test.java (rev 0)
+++ trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/filter/Bug23Test.java 2011-02-24 13:08:31 UTC (rev 73)
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2009-2010 Capgemini
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package net.sourceforge.statelessfilter.filter;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import junit.framework.TestCase;
+import net.sourceforge.statelessfilter.backend.MockSessionBackend;
+
+import org.springframework.mock.web.MockFilterChain;
+import org.springframework.mock.web.MockFilterConfig;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+/**
+ * Tests for bug
+ * https://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=23
+ *
+ * @author Nicolas Richeton - Capgemini
+ *
+ */
+public class Bug23Test extends TestCase {
+ Object sessionValue ="shouldBeNull";
+
+ public void testSetNull() throws IOException, ServletException {
+ MockSessionBackend.reset();
+
+ StatelessFilter filter = new StatelessFilter();
+ MockFilterConfig config = new MockFilterConfig();
+ filter.init(config);
+
+ MockHttpServletRequest request = new MockHttpServletRequest();
+ MockHttpServletResponse response = new MockHttpServletResponse();
+
+
+ MockFilterChain chain = new MockFilterChain() {
+
+ @Override
+ public void doFilter(ServletRequest request,
+ ServletResponse response) {
+ super.doFilter(request, response);
+
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ HttpSession session = httpRequest.getSession();
+ session.setAttribute("null", null);
+
+ sessionValue = session.getAttribute("null");
+ }
+
+ };
+
+ filter.doFilter(request, response, chain);
+
+
+
+ assertTrue(MockSessionBackend.getContent().getContent()
+ .containsKey("null"));
+ assertNull ( sessionValue );
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-23 17:16:13
|
Revision: 72
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=72&view=rev
Author: nricheton
Date: 2011-02-23 17:16:06 +0000 (Wed, 23 Feb 2011)
Log Message:
-----------
[maven-release-plugin] prepare for next development iteration
Modified Paths:
--------------
trunk/pom.xml
trunk/stateless-cookie-aes/pom.xml
trunk/stateless-cookie-aes-json/pom.xml
trunk/stateless-cookie-plain/pom.xml
trunk/stateless-core/pom.xml
trunk/stateless-memcache/pom.xml
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-session/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-02-23 17:15:52 UTC (rev 71)
+++ trunk/pom.xml 2011-02-23 17:16:06 UTC (rev 72)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<inceptionYear>2009</inceptionYear>
<mailingLists>
<mailingList>
@@ -49,9 +49,9 @@
</developer>
</developers>
<scm>
- <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.6</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.6</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.6</url>
+ <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/trunk/</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-02-23 17:15:52 UTC (rev 71)
+++ trunk/stateless-cookie-aes/pom.xml 2011-02-23 17:16:06 UTC (rev 72)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes</artifactId>
<name>Store: AES cookie</name>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-02-23 17:15:52 UTC (rev 71)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-02-23 17:16:06 UTC (rev 72)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes-json</artifactId>
<name>Store: AES+JSON cookie</name>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-02-23 17:15:52 UTC (rev 71)
+++ trunk/stateless-cookie-plain/pom.xml 2011-02-23 17:16:06 UTC (rev 72)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-plain</artifactId>
<name>Store: Plain cookie</name>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-02-23 17:15:52 UTC (rev 71)
+++ trunk/stateless-core/pom.xml 2011-02-23 17:16:06 UTC (rev 72)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-02-23 17:15:52 UTC (rev 71)
+++ trunk/stateless-memcache/pom.xml 2011-02-23 17:16:06 UTC (rev 72)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-02-23 17:15:52 UTC (rev 71)
+++ trunk/stateless-processor-cookie/pom.xml 2011-02-23 17:16:06 UTC (rev 72)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<description>Persist request attributes to a cookie.
id: processor-cookie</description>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-02-23 17:15:52 UTC (rev 71)
+++ trunk/stateless-session/pom.xml 2011-02-23 17:16:06 UTC (rev 72)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6</version>
+ <version>0.7-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-23 17:15:58
|
Revision: 71
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=71&view=rev
Author: nricheton
Date: 2011-02-23 17:15:52 +0000 (Wed, 23 Feb 2011)
Log Message:
-----------
[maven-scm] copy for tag stateless-parent-0.6
Added Paths:
-----------
tags/stateless-parent-0.6/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-23 17:15:40
|
Revision: 70
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=70&view=rev
Author: nricheton
Date: 2011-02-23 17:15:34 +0000 (Wed, 23 Feb 2011)
Log Message:
-----------
[maven-release-plugin] prepare release stateless-parent-0.6
Modified Paths:
--------------
trunk/pom.xml
trunk/stateless-cookie-aes/pom.xml
trunk/stateless-cookie-aes-json/pom.xml
trunk/stateless-cookie-plain/pom.xml
trunk/stateless-core/pom.xml
trunk/stateless-memcache/pom.xml
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-session/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-02-23 17:12:12 UTC (rev 69)
+++ trunk/pom.xml 2011-02-23 17:15:34 UTC (rev 70)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<inceptionYear>2009</inceptionYear>
<mailingLists>
<mailingList>
@@ -49,9 +49,9 @@
</developer>
</developers>
<scm>
- <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/trunk/</url>
+ <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.6</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.6</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.6</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-02-23 17:12:12 UTC (rev 69)
+++ trunk/stateless-cookie-aes/pom.xml 2011-02-23 17:15:34 UTC (rev 70)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes</artifactId>
<name>Store: AES cookie</name>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-02-23 17:12:12 UTC (rev 69)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-02-23 17:15:34 UTC (rev 70)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes-json</artifactId>
<name>Store: AES+JSON cookie</name>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-02-23 17:12:12 UTC (rev 69)
+++ trunk/stateless-cookie-plain/pom.xml 2011-02-23 17:15:34 UTC (rev 70)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-plain</artifactId>
<name>Store: Plain cookie</name>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-02-23 17:12:12 UTC (rev 69)
+++ trunk/stateless-core/pom.xml 2011-02-23 17:15:34 UTC (rev 70)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-02-23 17:12:12 UTC (rev 69)
+++ trunk/stateless-memcache/pom.xml 2011-02-23 17:15:34 UTC (rev 70)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-02-23 17:12:12 UTC (rev 69)
+++ trunk/stateless-processor-cookie/pom.xml 2011-02-23 17:15:34 UTC (rev 70)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<description>Persist request attributes to a cookie.
id: processor-cookie</description>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-02-23 17:12:12 UTC (rev 69)
+++ trunk/stateless-session/pom.xml 2011-02-23 17:15:34 UTC (rev 70)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.6-SNAPSHOT</version>
+ <version>0.6</version>
<scope>compile</scope>
</dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-23 17:12:18
|
Revision: 69
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=69&view=rev
Author: nricheton
Date: 2011-02-23 17:12:12 +0000 (Wed, 23 Feb 2011)
Log Message:
-----------
http://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=22 : fixed
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedServletOutputStream.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java 2011-02-23 16:26:12 UTC (rev 68)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java 2011-02-23 17:12:12 UTC (rev 69)
@@ -39,22 +39,30 @@
private String location = null;
private ServletOutputStream outputStream = null;
private PrintWriter printWriter = null;
+ boolean committed = false;
+ @Override
+ public boolean isCommitted() {
+ if (committed)
+ return true;
+ else
+ return super.isCommitted();
+ }
+
public BufferedHttpResponseWrapper(HttpServletResponse origResponse) {
super(origResponse);
}
@Override
public void flushBuffer() throws IOException {
-
+
if (this.outputStream != null) {
this.outputStream.flush();
} else if (this.printWriter != null) {
this.printWriter.flush();
bufferedServletOut.flush();
}
-
-
+
}
public byte[] getBuffer() {
@@ -134,8 +142,8 @@
public void sendError(int sc) throws IOException {
if (location == null) {
errorCode = new Integer(sc);
-
}
+ committed = true;
}
@Override
@@ -144,6 +152,7 @@
errorCode = new Integer(sc);
errorMsg = msg;
}
+ committed = true;
}
@Override
@@ -151,10 +160,14 @@
if (errorCode == null) {
this.location = location;
}
+ committed = true;
}
@Override
public void setBufferSize(int size) {
+ if( this.bufferedServletOut.hasData() ) {
+ throw new IllegalStateException("Content has already been sent. No Setbuffer allowed");
+}
this.bufferedServletOut.setBufferSize(size);
}
}
\ No newline at end of file
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedServletOutputStream.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedServletOutputStream.java 2011-02-23 16:26:12 UTC (rev 68)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedServletOutputStream.java 2011-02-23 17:12:12 UTC (rev 69)
@@ -28,6 +28,7 @@
public class BufferedServletOutputStream extends ServletOutputStream {
// the actual buffer
private ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ private boolean hasData = false;
/**
* @return the contents of the buffer.
@@ -44,7 +45,7 @@
// BufferedHttpResponseWrapper calls this method
public void setBufferSize(int size) {
// no way to resize an existing ByteArrayOutputStream
- this.bos = new ByteArrayOutputStream(size);
+ // this.bos = new ByteArrayOutputStream(size);
}
/**
@@ -52,6 +53,14 @@
*/
@Override
public void write(int data) {
+ if (!hasData)
+ hasData = true;
this.bos.write(data);
+
}
+
+ public boolean hasData() {
+
+ return hasData;
+ }
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-23 16:26:19
|
Revision: 68
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=68&view=rev
Author: nricheton
Date: 2011-02-23 16:26:12 +0000 (Wed, 23 Feb 2011)
Log Message:
-----------
https://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=22 : round 2
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java 2011-02-23 14:53:46 UTC (rev 67)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java 2011-02-23 16:26:12 UTC (rev 68)
@@ -46,11 +46,15 @@
@Override
public void flushBuffer() throws IOException {
+
if (this.outputStream != null) {
this.outputStream.flush();
} else if (this.printWriter != null) {
this.printWriter.flush();
+ bufferedServletOut.flush();
}
+
+
}
public byte[] getBuffer() {
@@ -65,37 +69,36 @@
@Override
public ServletOutputStream getOutputStream() throws IOException {
- synchronized (this) {
- if (this.printWriter != null) {
- throw new IllegalStateException(
- "The Servlet API forbids calling getOutputStream( ) after" //$NON-NLS-1$
- + " getWriter( ) has been called"); //$NON-NLS-1$
- }
+ if (this.printWriter != null) {
+ throw new IllegalStateException(
+ "The Servlet API forbids calling getOutputStream( ) after" //$NON-NLS-1$
+ + " getWriter( ) has been called"); //$NON-NLS-1$
+ }
- if (this.outputStream == null) {
- this.outputStream = this.bufferedServletOut;
- }
+ if (this.outputStream == null) {
+ this.outputStream = this.bufferedServletOut;
}
+
return this.outputStream;
}
@Override
public PrintWriter getWriter() throws IOException {
- synchronized (this) {
- if (this.outputStream != null) {
- throw new IllegalStateException(
- "The Servlet API forbids calling getWriter( ) after" //$NON-NLS-1$
- + " getOutputStream( ) has been called"); //$NON-NLS-1$
- }
- if (this.printWriter == null) {
- // Create writer with the response encoding.
- Writer writer = new OutputStreamWriter(this.bufferedServletOut,
- this.getResponse().getCharacterEncoding());
+ if (this.outputStream != null) {
+ throw new IllegalStateException(
+ "The Servlet API forbids calling getWriter( ) after" //$NON-NLS-1$
+ + " getOutputStream( ) has been called"); //$NON-NLS-1$
+ }
- this.printWriter = new PrintWriter(writer);
- }
+ if (this.printWriter == null) {
+ // Create writer with the response encoding.
+ Writer writer = new OutputStreamWriter(this.bufferedServletOut,
+ this.getResponse().getCharacterEncoding());
+
+ this.printWriter = new PrintWriter(writer);
}
+
return this.printWriter;
}
@@ -117,6 +120,9 @@
@Override
public void reset() {
this.bufferedServletOut.reset();
+ errorCode = null;
+ errorMsg = null;
+ location = null;
}
@Override
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-23 14:53:52
|
Revision: 67
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=67&view=rev
Author: nricheton
Date: 2011-02-23 14:53:46 +0000 (Wed, 23 Feb 2011)
Log Message:
-----------
Fix for tiles issues : round 1
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java 2011-02-22 17:29:53 UTC (rev 66)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java 2011-02-23 14:53:46 UTC (rev 67)
@@ -64,33 +64,37 @@
@Override
public ServletOutputStream getOutputStream() throws IOException {
- if (this.printWriter != null) {
- throw new IllegalStateException(
- "The Servlet API forbids calling getOutputStream( ) after" //$NON-NLS-1$
- + " getWriter( ) has been called"); //$NON-NLS-1$
- }
- if (this.outputStream == null) {
- this.outputStream = this.bufferedServletOut;
+ synchronized (this) {
+ if (this.printWriter != null) {
+ throw new IllegalStateException(
+ "The Servlet API forbids calling getOutputStream( ) after" //$NON-NLS-1$
+ + " getWriter( ) has been called"); //$NON-NLS-1$
+ }
+
+ if (this.outputStream == null) {
+ this.outputStream = this.bufferedServletOut;
+ }
}
return this.outputStream;
}
@Override
public PrintWriter getWriter() throws IOException {
- if (this.outputStream != null) {
- throw new IllegalStateException(
- "The Servlet API forbids calling getWriter( ) after" //$NON-NLS-1$
- + " getOutputStream( ) has been called"); //$NON-NLS-1$
- }
+ synchronized (this) {
+ if (this.outputStream != null) {
+ throw new IllegalStateException(
+ "The Servlet API forbids calling getWriter( ) after" //$NON-NLS-1$
+ + " getOutputStream( ) has been called"); //$NON-NLS-1$
+ }
- if (this.printWriter == null) {
- // Create writer with the response encoding.
- Writer writer = new BufferedWriter(new OutputStreamWriter(
- this.bufferedServletOut, this.getResponse()
- .getCharacterEncoding()));
+ if (this.printWriter == null) {
+ // Create writer with the response encoding.
+ Writer writer = new OutputStreamWriter(this.bufferedServletOut,
+ this.getResponse().getCharacterEncoding());
- this.printWriter = new PrintWriter(writer);
+ this.printWriter = new PrintWriter(writer);
+ }
}
return this.printWriter;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-22 17:29:59
|
Revision: 66
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=66&view=rev
Author: nricheton
Date: 2011-02-22 17:29:53 +0000 (Tue, 22 Feb 2011)
Log Message:
-----------
https://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=21
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieDataSupport.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieDataSupport.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieDataSupport.java 2011-02-22 17:27:26 UTC (rev 65)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieDataSupport.java 2011-02-22 17:29:53 UTC (rev 66)
@@ -17,6 +17,7 @@
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import net.sourceforge.statelessfilter.backend.ISessionData;
@@ -27,7 +28,7 @@
*/
public class CookieDataSupport implements ISessionData {
private static final long serialVersionUID = -8150387390531508793L;
- private HashMap<String, Object> content;
+ private ConcurrentHashMap<String, Object> content;
private long creationTime;
private String id;
private String remoteAddress;
@@ -47,7 +48,7 @@
* session id or null session id is not tracked by backend.
*/
public CookieDataSupport(ISessionData session) {
- content = new HashMap<String, Object>();
+ content = new ConcurrentHashMap<String, Object>();
content.putAll(session.getContent());
creationTime = session.getCreationTime();
@@ -64,7 +65,7 @@
public CookieDataSupport(String sessionId) {
this.id = sessionId;
creationTime = System.currentTimeMillis();
- content = new HashMap<String, Object>();
+ content = new ConcurrentHashMap<String, Object>();
valid = true;
}
@@ -90,7 +91,7 @@
}
public void setContent(HashMap<String, Object> content) {
- this.content = content;
+ this.content = new ConcurrentHashMap<String, Object>(content);
}
public void setCreationTime(long creationTime) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-22 17:27:32
|
Revision: 65
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=65&view=rev
Author: nricheton
Date: 2011-02-22 17:27:26 +0000 (Tue, 22 Feb 2011)
Log Message:
-----------
https://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=21
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/SessionData.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/SessionData.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/SessionData.java 2011-02-14 10:32:42 UTC (rev 64)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/SessionData.java 2011-02-22 17:27:26 UTC (rev 65)
@@ -16,8 +16,8 @@
package net.sourceforge.statelessfilter.session;
import java.io.Serializable;
-import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import net.sourceforge.statelessfilter.backend.ISessionData;
@@ -29,7 +29,7 @@
*/
public class SessionData implements ISessionData, Serializable {
private static final long serialVersionUID = -8150387390531508793L;
- HashMap<String, Object> content = new HashMap<String, Object>();
+ ConcurrentHashMap<String, Object> content = new ConcurrentHashMap<String, Object>();
long creationTime;
String id;
long requestId;
@@ -82,8 +82,8 @@
*
* @param content
*/
- public void setContent(HashMap<String, Object> content) {
- this.content = content;
+ public void setContent(Map<String, Object> content) {
+ this.content = new ConcurrentHashMap<String, Object>(content);
}
/**
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java 2011-02-14 10:32:42 UTC (rev 64)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java 2011-02-22 17:27:26 UTC (rev 65)
@@ -16,11 +16,11 @@
import java.io.Serializable;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
-import java.util.ArrayList;
import java.util.Enumeration;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Vector;
+import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
@@ -46,7 +46,7 @@
* Generated serial ID
*/
private static final long serialVersionUID = 3707021777892035588L;
- private Map<String, Object> content;
+ private ConcurrentHashMap<String, Object> content;
private long creationTime;
@@ -58,7 +58,7 @@
/**
* Modified attributes during the current request.
*/
- private volatile List<String> modifiedAttributes = new ArrayList<String>();
+ private volatile List<String> modifiedAttributes = new Vector<String>();
/**
* Were this session properties (validity, maxInactiveInterval) modified during the
@@ -207,7 +207,7 @@
setPropertyDirty();
}
- content = new HashMap<String, Object>();
+ content = new ConcurrentHashMap<String, Object>();
isNew = newSession;
dirty = newSession;
}
@@ -218,7 +218,7 @@
public void invalidate() {
valid = false;
setPropertyDirty();
- content = new HashMap<String, Object>();
+ content = new ConcurrentHashMap<String, Object>();
}
public boolean isDirty() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-14 10:32:48
|
Revision: 64
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=64&view=rev
Author: nricheton
Date: 2011-02-14 10:32:42 +0000 (Mon, 14 Feb 2011)
Log Message:
-----------
[maven-release-plugin] prepare for next development iteration
Modified Paths:
--------------
trunk/pom.xml
trunk/stateless-cookie-aes/pom.xml
trunk/stateless-cookie-aes-json/pom.xml
trunk/stateless-cookie-plain/pom.xml
trunk/stateless-core/pom.xml
trunk/stateless-memcache/pom.xml
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-session/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-02-14 10:32:28 UTC (rev 63)
+++ trunk/pom.xml 2011-02-14 10:32:42 UTC (rev 64)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<inceptionYear>2009</inceptionYear>
<mailingLists>
<mailingList>
@@ -49,9 +49,9 @@
</developer>
</developers>
<scm>
- <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.5</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.5</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.5</url>
+ <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/trunk/</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-02-14 10:32:28 UTC (rev 63)
+++ trunk/stateless-cookie-aes/pom.xml 2011-02-14 10:32:42 UTC (rev 64)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes</artifactId>
<name>Store: AES cookie</name>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-02-14 10:32:28 UTC (rev 63)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-02-14 10:32:42 UTC (rev 64)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes-json</artifactId>
<name>Store: AES+JSON cookie</name>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-02-14 10:32:28 UTC (rev 63)
+++ trunk/stateless-cookie-plain/pom.xml 2011-02-14 10:32:42 UTC (rev 64)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-plain</artifactId>
<name>Store: Plain cookie</name>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-02-14 10:32:28 UTC (rev 63)
+++ trunk/stateless-core/pom.xml 2011-02-14 10:32:42 UTC (rev 64)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-02-14 10:32:28 UTC (rev 63)
+++ trunk/stateless-memcache/pom.xml 2011-02-14 10:32:42 UTC (rev 64)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-02-14 10:32:28 UTC (rev 63)
+++ trunk/stateless-processor-cookie/pom.xml 2011-02-14 10:32:42 UTC (rev 64)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<description>Persist request attributes to a cookie.
id: processor-cookie</description>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-02-14 10:32:28 UTC (rev 63)
+++ trunk/stateless-session/pom.xml 2011-02-14 10:32:42 UTC (rev 64)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5</version>
+ <version>0.6-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-14 10:32:34
|
Revision: 63
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=63&view=rev
Author: nricheton
Date: 2011-02-14 10:32:28 +0000 (Mon, 14 Feb 2011)
Log Message:
-----------
[maven-scm] copy for tag stateless-parent-0.5
Added Paths:
-----------
tags/stateless-parent-0.5/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-14 10:32:19
|
Revision: 62
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=62&view=rev
Author: nricheton
Date: 2011-02-14 10:32:12 +0000 (Mon, 14 Feb 2011)
Log Message:
-----------
[maven-release-plugin] prepare release stateless-parent-0.5
Modified Paths:
--------------
trunk/pom.xml
trunk/stateless-cookie-aes/pom.xml
trunk/stateless-cookie-aes-json/pom.xml
trunk/stateless-cookie-plain/pom.xml
trunk/stateless-core/pom.xml
trunk/stateless-memcache/pom.xml
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-session/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-02-14 10:17:17 UTC (rev 61)
+++ trunk/pom.xml 2011-02-14 10:32:12 UTC (rev 62)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<inceptionYear>2009</inceptionYear>
<mailingLists>
<mailingList>
@@ -49,9 +49,9 @@
</developer>
</developers>
<scm>
- <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/trunk</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/trunk/</url>
+ <connection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.5</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.5</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.5</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-02-14 10:17:17 UTC (rev 61)
+++ trunk/stateless-cookie-aes/pom.xml 2011-02-14 10:32:12 UTC (rev 62)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes</artifactId>
<name>Store: AES cookie</name>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-02-14 10:17:17 UTC (rev 61)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-02-14 10:32:12 UTC (rev 62)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes-json</artifactId>
<name>Store: AES+JSON cookie</name>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-02-14 10:17:17 UTC (rev 61)
+++ trunk/stateless-cookie-plain/pom.xml 2011-02-14 10:32:12 UTC (rev 62)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-plain</artifactId>
<name>Store: Plain cookie</name>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-02-14 10:17:17 UTC (rev 61)
+++ trunk/stateless-core/pom.xml 2011-02-14 10:32:12 UTC (rev 62)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-02-14 10:17:17 UTC (rev 61)
+++ trunk/stateless-memcache/pom.xml 2011-02-14 10:32:12 UTC (rev 62)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-02-14 10:17:17 UTC (rev 61)
+++ trunk/stateless-processor-cookie/pom.xml 2011-02-14 10:32:12 UTC (rev 62)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<description>Persist request attributes to a cookie.
id: processor-cookie</description>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-02-14 10:17:17 UTC (rev 61)
+++ trunk/stateless-session/pom.xml 2011-02-14 10:32:12 UTC (rev 62)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.5-SNAPSHOT</version>
+ <version>0.5</version>
<scope>compile</scope>
</dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-02-14 10:17:24
|
Revision: 61
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=61&view=rev
Author: nricheton
Date: 2011-02-14 10:17:17 +0000 (Mon, 14 Feb 2011)
Log Message:
-----------
Removed some warnings
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2010-10-07 08:16:06 UTC (rev 60)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2011-02-14 10:17:17 UTC (rev 61)
@@ -44,7 +44,7 @@
protected String cookieName = "session"; //$NON-NLS-1$
protected String domain = null;
protected Integer maxAge = null;
- protected String path = "/";
+ protected String path = "/"; //$NON-NLS-1$
/**
* @see net.sourceforge.statelessfilter.backend.ISessionBackend#destroy()
@@ -114,7 +114,7 @@
return CookieUtils
.createCookie(name, content, domain, path, maxAge);
} catch (SignatureException e) {
- logger.error("Error creating cookie", e);
+ logger.error("Error creating cookie", e); //$NON-NLS-1$
}
return null;
}
@@ -130,7 +130,7 @@
try {
return CookieUtils.getCookie(request, name);
} catch (SignatureException e) {
- logger.error("Error sending cookie", e);
+ logger.error("Error sending cookie", e); //$NON-NLS-1$
}
return null;
}
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java 2010-10-07 08:16:06 UTC (rev 60)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java 2011-02-14 10:17:17 UTC (rev 61)
@@ -25,8 +25,8 @@
*/
public interface IPlugin {
- String TYPE_BACKEND = "backend";
- String TYPE_REQUEST_PROCESSOR = "processor";
+ String TYPE_BACKEND = "backend"; //$NON-NLS-1$
+ String TYPE_REQUEST_PROCESSOR = "processor"; //$NON-NLS-1$
/**
* Destroy the backend. Used to perform some cleanup if necessary.
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java 2010-10-07 08:16:06 UTC (rev 60)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java 2011-02-14 10:17:17 UTC (rev 61)
@@ -96,7 +96,7 @@
* Servlet config paramter name used to configure the list of the excluded
* uri patterns.
*/
- public static final String PARAM_EXCLUDE_PATTERN_LIST = "excludePatternList";
+ public static final String PARAM_EXCLUDE_PATTERN_LIST = "excludePatternList"; //$NON-NLS-1$
/**
* @see javax.servlet.Filter#destroy()
@@ -212,9 +212,9 @@
// Enables Spring instantiation listener if Spring is available and
// configured.
if (SpringContextChecker.checkForSpring(servletContext)) {
- if (logger.isInfoEnabled()) {
- logger.info("Enabling Spring instantiation listener");
- }
+
+ logger.info("Enabling Spring instantiation listener"); //$NON-NLS-1$
+
instantiationListener = new SpringObjectInstantiationListener();
instantiationListener.setServletContext(servletContext);
}
@@ -224,7 +224,7 @@
initInstantiationListener(globalProp);
} catch (Exception e) {
throw new ServletException(
- "Failed to load instantiation listener from /stateless.properties",
+ "Failed to load instantiation listener from /stateless.properties", //$NON-NLS-1$
e);
}
@@ -258,7 +258,7 @@
private void checkConfiguration() throws ServletException {
if (this.configuration.backends.size() == 0) {
throw new ServletException(
- "No backend installed. Please add one (stateless-session for instance) in the classpath");
+ "No backend installed. Please add one (stateless-session for instance) in the classpath"); //$NON-NLS-1$
}
}
@@ -319,8 +319,8 @@
// Ensure backend is available
if (!configuration.backends.containsKey(backend)) {
throw new ServletException(
- "Attributes are mapped on backend " + backend
- + " but it is not installed.");
+ "Attributes are mapped on backend " + backend //$NON-NLS-1$
+ + " but it is not installed."); //$NON-NLS-1$
}
}
}
@@ -374,9 +374,7 @@
// Create new instance
instantiationListener = backClazz.newInstance();
instantiationListener.setServletContext(servletContext);
- if (logger.isInfoEnabled()) {
- logger.info("Using instantiation listener " + clazz);
- }
+ logger.info("Using instantiation listener {}", clazz); //$NON-NLS-1$
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|