statelessfilter-commits Mailing List for Java Stateless Servlet Filter (Page 2)
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...> - 2012-08-30 21:44:33
|
Revision: 108
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=108&view=rev
Author: nricheton
Date: 2012-08-30 21:44:27 +0000 (Thu, 30 Aug 2012)
Log Message:
-----------
Fixed Typo
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java
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 2012-08-30 21:41:43 UTC (rev 107)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/StatelessFilter.java 2012-08-30 21:44:27 UTC (rev 108)
@@ -94,7 +94,7 @@
protected Configuration configuration = new Configuration();
/**
- * Servlet config paramter name used to configure the list of the excluded
+ * Servlet config parameter name used to configure the list of the excluded
* uri patterns.
*/
public static final String PARAM_EXCLUDE_PATTERN_LIST = "excludePatternList"; //$NON-NLS-1$
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2012-08-30 21:41:50
|
Revision: 107
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=107&view=rev
Author: nricheton
Date: 2012-08-30 21:41:43 +0000 (Thu, 30 Aug 2012)
Log Message:
-----------
Javadoc
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java
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 2012-08-30 21:40:47 UTC (rev 106)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IPlugin.java 2012-08-30 21:41:43 UTC (rev 107)
@@ -18,7 +18,7 @@
import java.util.Map;
/**
- * Interface for a stateless filter plugin.
+ * Interface for a generic Stateless filter plugin.
*
* @author Nicolas Richeton
*
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2012-08-30 21:40:53
|
Revision: 106
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=106&view=rev
Author: nricheton
Date: 2012-08-30 21:40:47 +0000 (Thu, 30 Aug 2012)
Log Message:
-----------
Javadoc
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IObjectInstantiationListener.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IObjectInstantiationListener.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IObjectInstantiationListener.java 2012-08-30 21:38:37 UTC (rev 105)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/filter/IObjectInstantiationListener.java 2012-08-30 21:40:47 UTC (rev 106)
@@ -21,7 +21,7 @@
* Object instantiation listener.
*
* This allows to delegate object (backend) creation to a custom class. Can be
- * used to create backends with spring instead of default Class#newInstance().
+ * used to create backends with Spring instead of default Class#newInstance().
*
* @author Nicolas Richeton
*
@@ -32,11 +32,15 @@
* Try to instantiate the 'className' object. If object cannot be created,
* the StatusService will try to create it by itself.
*
- *
* @param className
* @return object instance or null.
*/
Object getInstance(String className);
+ /**
+ * Servlet context will be automatically injected through this method.
+ *
+ * @param context
+ */
void setServletContext(ServletContext context);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2012-08-30 21:38:43
|
Revision: 105
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=105&view=rev
Author: nricheton
Date: 2012-08-30 21:38:37 +0000 (Thu, 30 Aug 2012)
Log Message:
-----------
Fixed Typo
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/ISessionData.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/ISessionData.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/ISessionData.java 2012-01-11 16:02:18 UTC (rev 104)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/ISessionData.java 2012-08-30 21:38:37 UTC (rev 105)
@@ -47,6 +47,7 @@
*/
String getId();
+ // No longer used.
// /**
// * Returns request Id. Note: the request Id changes between each session
// and
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 2012-01-11 16:02:18 UTC (rev 104)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2012-08-30 21:38:37 UTC (rev 105)
@@ -246,7 +246,7 @@
protected void setCookieName(String cookieName) {
this.cookieName = cookieName;
- // Update constant to inclue cookie name.
+ // Update constant to include 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...> - 2012-01-11 16:02:28
|
Revision: 104
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=104&view=rev
Author: nricheton
Date: 2012-01-11 16:02:18 +0000 (Wed, 11 Jan 2012)
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 2012-01-11 16:02:02 UTC (rev 103)
+++ trunk/pom.xml 2012-01-11 16:02:18 UTC (rev 104)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.8.1</version>
+ <version>0.8.2-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.8.1</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.8.1</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.8.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 2012-01-11 16:02:02 UTC (rev 103)
+++ trunk/stateless-cookie-aes/pom.xml 2012-01-11 16:02:18 UTC (rev 104)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-cookie-aes</artifactId>
@@ -12,7 +12,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2012-01-11 16:02:02 UTC (rev 103)
+++ trunk/stateless-cookie-aes-json/pom.xml 2012-01-11 16:02:18 UTC (rev 104)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-cookie-aes-json</artifactId>
@@ -25,7 +25,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2012-01-11 16:02:02 UTC (rev 103)
+++ trunk/stateless-cookie-plain/pom.xml 2012-01-11 16:02:18 UTC (rev 104)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-cookie-plain</artifactId>
@@ -15,7 +15,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2012-01-11 16:02:02 UTC (rev 103)
+++ trunk/stateless-core/pom.xml 2012-01-11 16:02:18 UTC (rev 104)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-core</artifactId>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2012-01-11 16:02:02 UTC (rev 103)
+++ trunk/stateless-memcache/pom.xml 2012-01-11 16:02:18 UTC (rev 104)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-memcache</artifactId>
@@ -15,7 +15,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</dependency>
<dependency> <groupId>spy</groupId>
<artifactId>memcached</artifactId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2012-01-11 16:02:02 UTC (rev 103)
+++ trunk/stateless-processor-cookie/pom.xml 2012-01-11 16:02:18 UTC (rev 104)
@@ -3,7 +3,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</parent>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
@@ -13,7 +13,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2012-01-11 16:02:02 UTC (rev 103)
+++ trunk/stateless-session/pom.xml 2012-01-11 16:02:18 UTC (rev 104)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1</version>
+ <version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-session</artifactId>
@@ -15,7 +15,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1</version>
+ <version>0.8.2-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...> - 2012-01-11 16:02:13
|
Revision: 103
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=103&view=rev
Author: nricheton
Date: 2012-01-11 16:02:02 +0000 (Wed, 11 Jan 2012)
Log Message:
-----------
[maven-scm] copy for tag stateless-parent-0.8.1
Added Paths:
-----------
tags/stateless-parent-0.8.1/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2012-01-11 16:01:52
|
Revision: 102
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=102&view=rev
Author: nricheton
Date: 2012-01-11 16:01:41 +0000 (Wed, 11 Jan 2012)
Log Message:
-----------
[maven-release-plugin] prepare release stateless-parent-0.8.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-12-23 19:21:14 UTC (rev 101)
+++ trunk/pom.xml 2012-01-11 16:01:41 UTC (rev 102)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.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.8.1</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.8.1</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.8.1</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-12-23 19:21:14 UTC (rev 101)
+++ trunk/stateless-cookie-aes/pom.xml 2012-01-11 16:01:41 UTC (rev 102)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-cookie-aes</artifactId>
@@ -12,7 +12,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-12-23 19:21:14 UTC (rev 101)
+++ trunk/stateless-cookie-aes-json/pom.xml 2012-01-11 16:01:41 UTC (rev 102)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-cookie-aes-json</artifactId>
@@ -25,7 +25,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-12-23 19:21:14 UTC (rev 101)
+++ trunk/stateless-cookie-plain/pom.xml 2012-01-11 16:01:41 UTC (rev 102)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-cookie-plain</artifactId>
@@ -15,7 +15,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-12-23 19:21:14 UTC (rev 101)
+++ trunk/stateless-core/pom.xml 2012-01-11 16:01:41 UTC (rev 102)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-core</artifactId>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-12-23 19:21:14 UTC (rev 101)
+++ trunk/stateless-memcache/pom.xml 2012-01-11 16:01:41 UTC (rev 102)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-memcache</artifactId>
@@ -15,7 +15,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</dependency>
<dependency> <groupId>spy</groupId>
<artifactId>memcached</artifactId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-12-23 19:21:14 UTC (rev 101)
+++ trunk/stateless-processor-cookie/pom.xml 2012-01-11 16:01:41 UTC (rev 102)
@@ -3,7 +3,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</parent>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
@@ -13,7 +13,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-12-23 19:21:14 UTC (rev 101)
+++ trunk/stateless-session/pom.xml 2012-01-11 16:01:41 UTC (rev 102)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-session</artifactId>
@@ -15,7 +15,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8.1-SNAPSHOT</version>
+ <version>0.8.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-12-23 19:21:20
|
Revision: 101
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=101&view=rev
Author: nricheton
Date: 2011-12-23 19:21:14 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
Cleanup
Added Paths:
-----------
trunk/stateless-processor-cookie/.settings/org.eclipse.core.resources.prefs
Added: trunk/stateless-processor-cookie/.settings/org.eclipse.core.resources.prefs
===================================================================
--- trunk/stateless-processor-cookie/.settings/org.eclipse.core.resources.prefs (rev 0)
+++ trunk/stateless-processor-cookie/.settings/org.eclipse.core.resources.prefs 2011-12-23 19:21:14 UTC (rev 101)
@@ -0,0 +1,7 @@
+#Fri Dec 23 15:35:49 CET 2011
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/<project>=UTF-8
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
Revision: 100
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=100&view=rev
Author: nricheton
Date: 2011-12-23 16:49:21 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
Signature support for plain cookies
Modified Paths:
--------------
trunk/stateless-cookie-plain/src/main/java/net/sourceforge/statelessfilter/backend/plaincookie/PlainCookieBackend.java
Modified: trunk/stateless-cookie-plain/src/main/java/net/sourceforge/statelessfilter/backend/plaincookie/PlainCookieBackend.java
===================================================================
--- trunk/stateless-cookie-plain/src/main/java/net/sourceforge/statelessfilter/backend/plaincookie/PlainCookieBackend.java 2011-12-23 16:28:26 UTC (rev 99)
+++ trunk/stateless-cookie-plain/src/main/java/net/sourceforge/statelessfilter/backend/plaincookie/PlainCookieBackend.java 2011-12-23 16:49:21 UTC (rev 100)
@@ -58,7 +58,9 @@
private static final String DESERIALIZE_ERROR = "Cannot deserialize session. A new one will be created"; //$NON-NLS-1$
private static final String ID = "plaincookie"; //$NON-NLS-1$
private static final String PARAM_COMPRESS = "compress"; //$NON-NLS-1$
+ private static final String PARAM_KEY = "key"; //$NON-NLS-1$
private boolean compress = true;
+ private String key = null;
Logger logger = LoggerFactory.getLogger(PlainCookieBackend.class);
public PlainCookieBackend() {
@@ -92,10 +94,19 @@
if (!StringUtils.isEmpty(compress)) {
this.compress = Boolean.parseBoolean(compress);
}
+
+ String key = config.get(PARAM_KEY);
+ if (!StringUtils.isEmpty(key)) {
+ this.key = key;
+ }
if (logger.isInfoEnabled()) {
logger.info("Cookie name: '" + cookieName + "', compression: '" //$NON-NLS-1$//$NON-NLS-2$
- + this.compress + "'"); //$NON-NLS-1$
+ + this.compress + "'" ); //$NON-NLS-1$
+
+ if( key != null ){
+ logger.info( "Cookie signature : " + (key != null) );
+ }
}
}
@@ -106,7 +117,7 @@
public ISessionData restore(HttpServletRequest request) {
try {
- byte[] data = getCookieData(request, null);
+ byte[] data = getCookieData(request, null, key !=null, key);
if (data != null) {
InputStream inputStream = new ByteArrayInputStream(data);
@@ -155,13 +166,13 @@
outputStream.close();
baos.close();
- setCookieData(request, response, baos.toByteArray());
+ setCookieData(request, response, baos.toByteArray(), key !=null, key);
if (logger.isInfoEnabled()) {
logger.info("Cookie size : " + baos.toByteArray().length); //$NON-NLS-1$
}
} else {
- setCookieData(request, response, null);
+ setCookieData(request, response, null,key !=null, key);
}
} catch (SignatureException e) {
throw new IOException(e);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-23 16:28:32
|
Revision: 99
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=99&view=rev
Author: nricheton
Date: 2011-12-23 16:28:26 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
Cleanup
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-12-23 16:15:22 UTC (rev 98)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2011-12-23 16:28:26 UTC (rev 99)
@@ -262,7 +262,7 @@
Enumeration<?> headers = request.getHeaders("X-Forwarded-For");
if (headers != null) {
- logger.info("X-Forwarded-For headers found.");
+ logger.debug("X-Forwarded-For headers found.");
while (headers.hasMoreElements()) {
String h = (String) headers.nextElement();
String[] splitted = StringUtils.split(h, ",");
@@ -279,8 +279,8 @@
sb.append(",");
sb.append(request.getRemoteAddr());
- if (logger.isInfoEnabled()) {
- logger.info("Remote ip address : " + sb.toString());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Remote ip address : " + sb.toString());
}
return sb.toString();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-23 16:15:28
|
Revision: 98
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=98&view=rev
Author: nricheton
Date: 2011-12-23 16:15:22 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
cleanup
Modified Paths:
--------------
trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java
trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java
Modified: trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java
===================================================================
--- trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java 2011-12-23 16:02:07 UTC (rev 97)
+++ trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java 2011-12-23 16:15:22 UTC (rev 98)
@@ -133,7 +133,8 @@
if (StringUtils.isEmpty(key) || StringUtils.isEmpty(iv)) {
throw new Exception(
- "aescookie.key or aescookie.iv parameter missing in /stateless.properties."); //$NON-NLS-1$
+ ID
+ + "." + PARAM_KEY + " or " + ID + "." + PARAM_IV + " parameter missing in /stateless.properties."); //$NON-NLS-1$
}
secretKey = new SecretKeySpec(getEncryptionBytes(key, 16), ENCRYPTION);
@@ -173,7 +174,8 @@
CookieDataSupport s = (CookieDataSupport) ois.readObject();
if (s.isValid()
- && s.getRemoteAddress().equals(getFullRemoteAddr(request))) {
+ && s.getRemoteAddress().equals(
+ getFullRemoteAddr(request))) {
return s;
}
}
Modified: trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java
===================================================================
--- trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java 2011-12-23 16:02:07 UTC (rev 97)
+++ trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java 2011-12-23 16:15:22 UTC (rev 98)
@@ -19,6 +19,7 @@
import java.security.SignatureException;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
@@ -116,7 +117,12 @@
if (StringUtils.isEmpty(key) || StringUtils.isEmpty(iv)) {
throw new Exception(
- "jsonaescookie.key or jsonaescookie.iv parameter missing in /stateless.properties."); //$NON-NLS-1$
+ ID
+ + "."
+ + PARAM_KEY
+ + " or "
+ + ID
+ + "." + PARAM_IV + " parameter missing in /stateless.properties."); //$NON-NLS-1$
}
secretKey = new SecretKeySpec(getEncryptionBytes(key, 16), ENCRYPTION);
@@ -151,7 +157,8 @@
CookieDataSupport.class);
if (s.isValid()
- && s.getRemoteAddress().equals(getFullRemoteAddr(request))) {
+ && s.getRemoteAddress().equals(
+ getFullRemoteAddr(request))) {
return s;
}
}
@@ -176,6 +183,9 @@
CookieDataSupport cookieData = new CookieDataSupport(session);
cookieData.setRemoteAddress(getFullRemoteAddr(request));
+ // JSON only supports Strings.
+ ensureStrings(session.getContent());
+
String dataString = mapper.writeValueAsString(cookieData);
byte[] data;
@@ -203,4 +213,25 @@
throw new IOException(e);
}
}
+
+ /**
+ * Throw IllegalArgumentException if the map does not contains only String
+ * objects.
+ *
+ * @param map
+ */
+ private void ensureStrings(Map<String, Object> map) {
+
+ if (map == null || map.size() == 0)
+ return;
+
+ Set<String> keys = map.keySet();
+ for (String key : keys) {
+ if (!(map.get(key) instanceof String)) {
+ throw new IllegalArgumentException(
+ key
+ + " is not a String. JSON stateless session only support string data.");
+ }
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-23 16:02:14
|
Revision: 97
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=97&view=rev
Author: nricheton
Date: 2011-12-23 16:02:07 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
cleanup
Removed Paths:
-------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapperDev.java
Deleted: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapperDev.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapperDev.java 2011-12-23 15:55:50 UTC (rev 96)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapperDev.java 2011-12-23 16:02:07 UTC (rev 97)
@@ -1,356 +0,0 @@
-/*
- * 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.wrappers;
-
-import java.io.IOException;
-import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import net.sourceforge.statelessfilter.backend.ISessionBackend;
-import net.sourceforge.statelessfilter.backend.ISessionData;
-import net.sourceforge.statelessfilter.filter.Configuration;
-import net.sourceforge.statelessfilter.session.SessionData;
-import net.sourceforge.statelessfilter.session.StatelessSession;
-
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Stateless request wrapper
- *
- * @author Nicolas Richeton - Capgemini
- *
- */
-public class StatelessRequestWrapperDev 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(StatelessRequestWrapperDev.class);
- HttpServletRequest originalRequest = null;
-
- StatelessSession session = null;
-
- /**
- * Create a new request wrapper.
- *
- * @param request
- * @param backends
- */
- public StatelessRequestWrapperDev(HttpServletRequest request,
- Configuration backends) {
- super(request);
- originalRequest = request;
- this.backends = backends;
- }
-
- /**
- * Returns real server session.
- *
- * @return
- */
- public HttpSession getServerSession() {
- return super.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;
- }
-
- /**
- * (non-Javadoc)
- *
- * @see javax.servlet.http.HttpServletRequestWrapper#getSession(boolean)
- */
- @Override
- public HttpSession getSession(boolean create) {
- if (create) {
- return getSession();
- }
-
- if (session == null) {
- try {
- session = restoreSession();
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException(e);
- }
- }
-
- return session;
- }
-
- /**
- * Stores session in backends
- *
- * @param myrequest
- * @param myresponse
- * @throws IOException
- */
- public void writeSession(HttpServletRequest myrequest,
- HttpServletResponse myresponse) throws IOException {
-
- // If there is a session (session requested by the application)
- if (session != null) {
-
- // Session has changed ?
- if (backends.useDirty && !session.isDirty()) {
- logger.info("Session has not changed."); //$NON-NLS-1$
- return;
- }
-
- long requestId = System.currentTimeMillis();
- session.setNew(false);
-
- // Dispatch attributes between backends according to configuration
-
- // Session attributes
- Map<String, Object> sessionAttributes = session.getContent();
- // Session attributes which were modified during the request
- List<String> modifiedAttributes = session.getDirtyAttributes();
-
- // Backends flagged as dirty during dispatch
- List<String> modifiedBackends = new ArrayList<String>();
-
- // 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>>();
-
- for (String name : sessionAttributes.keySet()) {
- if (isAttributeMapped(name)) {
- // Add attribute to backend session
- getBackendSessionData(attributesDispatched,
- backends.backendsAttributeMapping.get(name),
- requestId).getContent().put(name,
- sessionAttributes.get(name));
-
- // Add attribute name as modified for this backend
- if( remainingModifiedAttributes.contains(name))
- getBackendModifiedAttributes(modifiedAttributesDispatched,
- backends.backendsAttributeMapping.get(name)).add(
- name);
-
- // Set backend modified.
- setModified(modifiedBackends, modifiedAttributes, name);
-
- logger.info(INFO_USES, name,
- backends.backendsAttributeMapping.get(name));
-
- } else {
- getBackendSessionData(attributesDispatched,
- backends.defaultBackend, requestId).getContent()
- .put(name, sessionAttributes.get(name));
-
- if( remainingModifiedAttributes.contains(name))
- getBackendModifiedAttributes(modifiedAttributesDispatched,
- backends.defaultBackend).add(name);
-
- setModified(modifiedBackends, modifiedAttributes, name);
- logger.info(INFO_USES_DEFAULT, name,
- backends.defaultBackend);
-
- }
-
- // Remove attribute from remaining attributes to process
- remainingModifiedAttributes.remove(name);
- }
-
- // Process remaining attributes
- for (String name : remainingModifiedAttributes) {
- if (isAttributeMapped(name)) {
- getBackendModifiedAttributes(modifiedAttributesDispatched,
- backends.backendsAttributeMapping.get(name)).add(
- name);
-
- setModified(modifiedBackends, modifiedAttributes, name);
- logger.info(INFO_USES, name,
- backends.backendsAttributeMapping.get(name));
- } else {
- getBackendModifiedAttributes(modifiedAttributesDispatched,
- backends.defaultBackend).add(name);
-
- setModified(modifiedBackends, modifiedAttributes, name);
-
- logger.info(INFO_USES_DEFAULT, name,
- backends.defaultBackend);
- }
- }
-
- if (session.isPropertyDirty()) {
- // Force update on all backends.
- logger.info("Session properties have changed. Forcing update on all backends."); //$NON-NLS-1$
-
- for (String back : backends.backends.keySet()) {
- ISessionBackend backend = backends.backends.get(back);
- backend.save(
- getBackendSessionData(attributesDispatched, back,
- requestId), modifiedAttributesDispatched
- .get(back), originalRequest, myresponse);
- }
- } else {
- // Update only modified backends.
- for (String back : modifiedBackends) {
- ISessionBackend backend = backends.backends.get(back);
- backend.save(
- getBackendSessionData(attributesDispatched, back,
- requestId), modifiedAttributesDispatched
- .get(back), originalRequest, myresponse);
- }
- }
- }
-
- }
-
- /**
- * Restore a session by querying all backends. If session cannot be
- * restored, a new one is created.
- *
- *
- * @return the restored or created session.
- * @throws NoSuchAlgorithmException
- */
- private StatelessSession createSession() throws NoSuchAlgorithmException {
-
- StatelessSession s = restoreSession();
-
- if (s == null) {
- s = new StatelessSession(this);
- s.init(true);
- }
-
- return s;
- }
-
- /**
- * Get current data for session backend. Creates a new ISessionData if
- * necessary.
- *
- * @param dispatched
- * @param backendName
- * @param requestId
- * @return
- */
- private ISessionData getBackendSessionData(
- Map<String, ISessionData> dispatched, String backendName,
- long requestId) {
-
- // If session data exists for this backend, return immediately.
- if (dispatched.containsKey(backendName)) {
- return dispatched.get(backendName);
- }
-
- // Else create empty session data for this backend.
- SessionData data = new SessionData();
- data.setId(session.getId());
- data.setCreationTime(session.getCreationTime());
- data.setValid(session.isValid());
- data.setRequestId(requestId);
- dispatched.put(backendName, data);
- return data;
- }
-
- private List<String> getBackendModifiedAttributes(
- Map<String, List<String>> modifiedAttributesDispatched,
- String backendName) {
- if (modifiedAttributesDispatched.containsKey(backendName)) {
- return modifiedAttributesDispatched.get(backendName);
- }
-
- List<String> result = new ArrayList<String>();
- modifiedAttributesDispatched.put(backendName, result);
-
- return result;
- }
-
- /**
- * Checks if attrName is specifically mapped to a session backend in
- * configuration.
- *
- * @param attrName
- * session attribute name.
- * @return true if mapped to a session backend, false if using default.
- */
- private boolean isAttributeMapped(String attrName) {
- if (backends != null && backends.backendsAttributeMapping != null) {
- return backends.backendsAttributeMapping.containsKey(attrName);
- }
-
- return false;
- }
-
- private StatelessSession restoreSession() throws NoSuchAlgorithmException {
- StatelessSession s = new StatelessSession(this);
- ISessionData data = null;
- boolean restored = false;
- // long requestId = -1;
-
- s.init(false);
- for (ISessionBackend back : backends.backends.values()) {
- data = back.restore(originalRequest);
-
- // Mark session restored if at least one backend returned a session
- if (data != null) {
- restored = true;
- s.merge(data);
- }
- }
-
- // Reset session
- if (!restored) {
- return null;
- }
- return s;
- }
-
- private void setModified(List<String> modifiedBackends,
- List<String> modifiedAttributes, String attributeName) {
- String backend = backends.backendsAttributeMapping.get(attributeName);
-
- if (StringUtils.isEmpty(backend)) {
- backend = backends.defaultBackend;
- }
-
- if (modifiedAttributes.contains(attributeName)
- && !modifiedBackends.contains(backend)) {
-
- modifiedBackends.add(backend);
-
- logger.info("Flagging backend {} as modified", backend); //$NON-NLS-1$
- }
- }
-}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-23 15:55:59
|
Revision: 96
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=96&view=rev
Author: nricheton
Date: 2011-12-23 15:55:50 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
- Cleanup
- Support for X-Forwarded-For
Modified Paths:
--------------
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-12-23 15:55:07 UTC (rev 95)
+++ trunk/pom.xml 2011-12-23 15:55:50 UTC (rev 96)
@@ -119,7 +119,7 @@
<module>stateless-cookie-aes-json</module>
<module>stateless-memcache</module>
<module>stateless-processor-cookie</module>
- <module>stateless-cookie-mac-json</module>
+
</modules>
<reporting>
<plugins>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-23 15:55:16
|
Revision: 95
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=95&view=rev
Author: nricheton
Date: 2011-12-23 15:55:07 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
- Cleanup
- Support for X-Forwarded-For
Modified Paths:
--------------
trunk/stateless-cookie-plain/pom.xml
trunk/stateless-cookie-plain/src/main/java/net/sourceforge/statelessfilter/backend/plaincookie/PlainCookieBackend.java
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-12-23 15:53:53 UTC (rev 94)
+++ trunk/stateless-cookie-plain/pom.xml 2011-12-23 15:55:07 UTC (rev 95)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-cookie-plain</artifactId>
@@ -15,9 +15,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.9-SNAPSHOT</version>
- <type>jar</type>
- <scope>compile</scope>
+ <version>0.8.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-plain/src/main/java/net/sourceforge/statelessfilter/backend/plaincookie/PlainCookieBackend.java
===================================================================
--- trunk/stateless-cookie-plain/src/main/java/net/sourceforge/statelessfilter/backend/plaincookie/PlainCookieBackend.java 2011-12-23 15:53:53 UTC (rev 94)
+++ trunk/stateless-cookie-plain/src/main/java/net/sourceforge/statelessfilter/backend/plaincookie/PlainCookieBackend.java 2011-12-23 15:55:07 UTC (rev 95)
@@ -22,6 +22,7 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
+import java.security.SignatureException;
import java.util.List;
import java.util.Map;
import java.util.zip.GZIPInputStream;
@@ -104,10 +105,10 @@
@Override
public ISessionData restore(HttpServletRequest request) {
- byte[] data = getCookieData(request, null);
+ try {
+ byte[] data = getCookieData(request, null);
- if (data != null) {
- try {
+ if (data != null) {
InputStream inputStream = new ByteArrayInputStream(data);
if (compress) {
inputStream = new GZIPInputStream(inputStream);
@@ -117,48 +118,53 @@
CookieDataSupport s = (CookieDataSupport) ois.readObject();
if (s.isValid()
- && s.getRemoteAddress().equals(request.getRemoteAddr())) {
+ && s.getRemoteAddress().equals(getFullRemoteAddr(request))) {
return s;
}
- } catch (Exception e) {
- logger.info(DESERIALIZE_ERROR, e);
}
+ } catch (Exception e) {
+ logger.info(DESERIALIZE_ERROR, e);
}
return null;
}
-
/**
- * @see net.sourceforge.statelessfilter.backend.support.CookieBackendSupport#save(net.sourceforge.statelessfilter.backend.ISessionData, java.util.List, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+ * @see net.sourceforge.statelessfilter.backend.support.CookieBackendSupport#save(net.sourceforge.statelessfilter.backend.ISessionData,
+ * java.util.List, javax.servlet.http.HttpServletRequest,
+ * javax.servlet.http.HttpServletResponse)
*/
@Override
- public void save(ISessionData session, List<String> dirtyAttributes, HttpServletRequest request,
- HttpServletResponse response) throws IOException {
+ public void save(ISessionData session, List<String> dirtyAttributes,
+ HttpServletRequest request, HttpServletResponse response)
+ throws IOException {
+ try {
+ if (session != null) {
+ CookieDataSupport cookieData = new CookieDataSupport(session);
+ cookieData.setRemoteAddress(getFullRemoteAddr(request));
- if (session != null) {
- CookieDataSupport cookieData = new CookieDataSupport(session);
- cookieData.setRemoteAddress(request.getRemoteAddr());
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ OutputStream outputStream = baos;
+ if (compress) {
+ outputStream = new GZIPOutputStream(outputStream);
+ }
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- OutputStream outputStream = baos;
- if (compress) {
- outputStream = new GZIPOutputStream(outputStream);
- }
+ ObjectOutputStream oos = new ObjectOutputStream(outputStream);
+ oos.writeObject(cookieData);
+ oos.close();
+ outputStream.close();
+ baos.close();
- ObjectOutputStream oos = new ObjectOutputStream(outputStream);
- oos.writeObject(cookieData);
- oos.close();
- outputStream.close();
- baos.close();
+ setCookieData(request, response, baos.toByteArray());
- setCookieData(request, response, baos.toByteArray());
-
- if (logger.isInfoEnabled()) {
- logger.info("Cookie size : " + baos.toByteArray().length); //$NON-NLS-1$
+ if (logger.isInfoEnabled()) {
+ logger.info("Cookie size : " + baos.toByteArray().length); //$NON-NLS-1$
+ }
+ } else {
+ setCookieData(request, response, null);
}
- } else {
- setCookieData(request, response, null);
+ } catch (SignatureException e) {
+ throw new IOException(e);
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-23 15:54:04
|
Revision: 94
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=94&view=rev
Author: nricheton
Date: 2011-12-23 15:53:53 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
- Cleanup
- Support for X-Forwarded-For
Modified Paths:
--------------
trunk/pom.xml
trunk/stateless-cookie-aes/pom.xml
trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java
trunk/stateless-cookie-aes-json/pom.xml
trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java
trunk/stateless-core/pom.xml
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java
trunk/stateless-memcache/pom.xml
trunk/stateless-memcache/src/main/java/net/sourceforge/statelessfilter/backend/memcache/MemcacheBackend.java
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-processor-cookie/src/main/java/net/sourceforge/statelessfilter/processor/request/Cookie2AttributeProcessor.java
trunk/stateless-session/pom.xml
Added Paths:
-----------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapperDev.java
trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/backend/XForwardedForTest.java
Removed Paths:
-------------
trunk/stateless-cookie-aes/src/main/java/META-INF/
trunk/stateless-cookie-aes-json/src/main/java/META-INF/
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/pom.xml 2011-12-23 15:53:53 UTC (rev 94)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
<inceptionYear>2009</inceptionYear>
<mailingLists>
<mailingList>
@@ -119,6 +119,7 @@
<module>stateless-cookie-aes-json</module>
<module>stateless-memcache</module>
<module>stateless-processor-cookie</module>
+ <module>stateless-cookie-mac-json</module>
</modules>
<reporting>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-cookie-aes/pom.xml 2011-12-23 15:53:53 UTC (rev 94)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-cookie-aes</artifactId>
@@ -12,7 +12,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java
===================================================================
--- trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java 2011-12-23 15:53:53 UTC (rev 94)
@@ -22,6 +22,7 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
+import java.security.SignatureException;
import java.util.List;
import java.util.Map;
import java.util.zip.GZIPInputStream;
@@ -146,10 +147,10 @@
@Override
public ISessionData restore(HttpServletRequest request) {
- byte[] data = getCookieData(request, null);
+ try {
+ byte[] data = getCookieData(request, null);
- if (data != null) {
- try {
+ if (data != null) {
int index = ArrayUtils.indexOf(data, SEPARATOR.getBytes()[0]);
int size = Integer.parseInt(new String(ArrayUtils.subarray(
@@ -172,12 +173,12 @@
CookieDataSupport s = (CookieDataSupport) ois.readObject();
if (s.isValid()
- && s.getRemoteAddress().equals(request.getRemoteAddr())) {
+ && s.getRemoteAddress().equals(getFullRemoteAddr(request))) {
return s;
}
- } catch (Exception e) {
- logger.info(DESERIALIZE_ERROR, e);
}
+ } catch (Exception e) {
+ logger.info(DESERIALIZE_ERROR, e);
}
return null;
@@ -193,42 +194,46 @@
HttpServletRequest request, HttpServletResponse response)
throws IOException {
- if (session != null) {
- CookieDataSupport cookieData = new CookieDataSupport(session);
- cookieData.setRemoteAddress(request.getRemoteAddr());
+ try {
+ if (session != null) {
+ CookieDataSupport cookieData = new CookieDataSupport(session);
+ cookieData.setRemoteAddress(getFullRemoteAddr(request));
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- OutputStream outputStream = baos;
- if (compress) {
- outputStream = new GZIPOutputStream(outputStream);
- }
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ OutputStream outputStream = baos;
+ if (compress) {
+ outputStream = new GZIPOutputStream(outputStream);
+ }
- ObjectOutputStream oos = new ObjectOutputStream(outputStream);
- oos.writeObject(cookieData);
- oos.close();
- outputStream.close();
- baos.close();
+ ObjectOutputStream oos = new ObjectOutputStream(outputStream);
+ oos.writeObject(cookieData);
+ oos.close();
+ outputStream.close();
+ baos.close();
- byte[] data;
- try {
- Cipher encryptCipher = Cipher
- .getInstance(ENCRYPTION_WITH_PARAM);
- encryptCipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
- data = encryptCipher.doFinal(baos.toByteArray());
- } catch (Exception e) {
- throw new IOException(e.getMessage());
- }
+ byte[] data;
+ try {
+ Cipher encryptCipher = Cipher
+ .getInstance(ENCRYPTION_WITH_PARAM);
+ encryptCipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
+ data = encryptCipher.doFinal(baos.toByteArray());
+ } catch (Exception e) {
+ throw new IOException(e.getMessage());
+ }
- byte[] size = (data.length + SEPARATOR).getBytes();
+ byte[] size = (data.length + SEPARATOR).getBytes();
- setCookieData(request, response, ArrayUtils.addAll(size, data));
+ setCookieData(request, response, ArrayUtils.addAll(size, data));
- if (logger.isDebugEnabled()) {
- logger.debug("Cookie size : " + ArrayUtils.addAll(size, data).length); //$NON-NLS-1$
+ if (logger.isDebugEnabled()) {
+ logger.debug("Cookie size : " + ArrayUtils.addAll(size, data).length); //$NON-NLS-1$
+ }
+
+ } else {
+ setCookieData(request, response, null);
}
-
- } else {
- setCookieData(request, response, null);
+ } catch (SignatureException e) {
+ throw new IOException(e);
}
}
}
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-12-23 15:53:53 UTC (rev 94)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-cookie-aes-json</artifactId>
@@ -25,8 +25,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.9-SNAPSHOT</version>
- <scope>compile</scope>
+ <version>0.8.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
@@ -59,5 +58,11 @@
<artifactId>jackson-core-asl</artifactId>
<version>1.9.3</version>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.10</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Modified: trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java
===================================================================
--- trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java 2011-12-23 15:53:53 UTC (rev 94)
@@ -16,6 +16,7 @@
package net.sourceforge.statelessfilter.backend.jsonaescookie;
import java.io.IOException;
+import java.security.SignatureException;
import java.util.List;
import java.util.Map;
@@ -101,7 +102,7 @@
}
/**
- * Loads key and iv for encryption and performs normal init.
+ * Loads key and iv for encryption and performs normal init.
*
* @throws Exception
* @see com.capgemini.stateless.backend.plaincookie.ISessionBackend#init(java.util.Map)
@@ -128,11 +129,11 @@
*/
@Override
public ISessionData restore(HttpServletRequest request) {
+ try {
- byte[] data = getCookieData(request, null);
+ byte[] data = getCookieData(request, null);
- if (data != null) {
- try {
+ if (data != null) {
int index = ArrayUtils.indexOf(data, SEPARATOR.getBytes()[0]);
int size = Integer.parseInt(new String(ArrayUtils.subarray(
@@ -150,12 +151,12 @@
CookieDataSupport.class);
if (s.isValid()
- && s.getRemoteAddress().equals(request.getRemoteAddr())) {
+ && s.getRemoteAddress().equals(getFullRemoteAddr(request))) {
return s;
}
- } catch (Exception e) {
- logger.info(DESERIALIZE_ERROR, e);
}
+ } catch (Exception e) {
+ logger.info(DESERIALIZE_ERROR, e);
}
return null;
@@ -170,33 +171,36 @@
public void save(ISessionData session, List<String> dirtyAttributes,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
+ try {
+ if (session != null) {
+ CookieDataSupport cookieData = new CookieDataSupport(session);
+ cookieData.setRemoteAddress(getFullRemoteAddr(request));
- if (session != null) {
- CookieDataSupport cookieData = new CookieDataSupport(session);
- cookieData.setRemoteAddress(request.getRemoteAddr());
+ String dataString = mapper.writeValueAsString(cookieData);
- String dataString = mapper.writeValueAsString(cookieData);
+ byte[] data;
+ try {
+ Cipher encryptCipher = Cipher
+ .getInstance(ENCRYPTION_WITH_PARAM);
+ encryptCipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
+ data = encryptCipher.doFinal(dataString.getBytes());
+ } catch (Exception e) {
+ throw new IOException(e.getMessage());
+ }
- byte[] data;
- try {
- Cipher encryptCipher = Cipher
- .getInstance(ENCRYPTION_WITH_PARAM);
- encryptCipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
- data = encryptCipher.doFinal(dataString.getBytes());
- } catch (Exception e) {
- throw new IOException(e.getMessage());
- }
+ byte[] size = (data.length + SEPARATOR).getBytes();
- byte[] size = (data.length + SEPARATOR).getBytes();
+ setCookieData(request, response, ArrayUtils.addAll(size, data));
- setCookieData(request, response, ArrayUtils.addAll(size, data));
+ if (logger.isDebugEnabled()) {
+ logger.debug("Cookie size : " + ArrayUtils.addAll(size, data).length); //$NON-NLS-1$
+ }
- if (logger.isDebugEnabled()) {
- logger.debug("Cookie size : " + ArrayUtils.addAll(size, data).length); //$NON-NLS-1$
+ } else {
+ setCookieData(request, response, null);
}
-
- } else {
- setCookieData(request, response, null);
+ } catch (SignatureException e) {
+ throw new IOException(e);
}
}
}
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-core/pom.xml 2011-12-23 15:53:53 UTC (rev 94)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-core</artifactId>
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-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieBackendSupport.java 2011-12-23 15:53:53 UTC (rev 94)
@@ -16,6 +16,7 @@
import java.io.IOException;
import java.security.SignatureException;
import java.util.ArrayList;
+import java.util.Enumeration;
import java.util.List;
import java.util.Map;
@@ -56,215 +57,231 @@
*
*/
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));
+ }
- }
+ }
- /**
- * 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;
- }
+ /**
+ * 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;
- }
+ /**
+ * Read raw data from cookie.
+ *
+ * @param request
+ * @param response
+ * @return
+ * @throws SignatureException
+ */
+ protected byte[] getCookieData(HttpServletRequest request, HttpServletResponse response) throws SignatureException {
+ return getCookieData(request, response, false, 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;
- }
+ protected byte[] getCookieData(HttpServletRequest request, HttpServletResponse response, boolean signed, String key)
+ throws SignatureException {
+ 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 = CookieUtils.getCookie(request, cookieName + i, signed, key)) != 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
+ * @throws SignatureException
+ */
+ protected void setCookieData(HttpServletRequest request, HttpServletResponse response, byte[] data)
+ throws SignatureException {
+ setCookieData(request, response, data, false, null);
+ }
- /**
- * 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");
+ protected void setCookieData(HttpServletRequest request, HttpServletResponse response, byte[] data, boolean sign,
+ String key) throws SignatureException {
+ // 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 = CookieUtils.createCookie(cookieName + i, datapart, domain, path, maxAge, sign, key);
+ 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 = CookieUtils.createCookie(cookieName + i, StringUtils.EMPTY, domain, path, maxAge, sign, key);
+ 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;
+ /**
+ * 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$
- }
+ // Update constant to inclue cookie name.
+ ATTR_COUNT = "stateless." + cookieName + ".count"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * Get request remote address. If a proxy was in use, all X-Forwarded-For
+ * headers are also returned.
+ *
+ * @param request
+ * @return
+ */
+ protected String getFullRemoteAddr(HttpServletRequest request) {
+ StringBuilder sb = new StringBuilder();
+ Enumeration<?> headers = request.getHeaders("X-Forwarded-For");
+
+ if (headers != null) {
+ logger.info("X-Forwarded-For headers found.");
+ while (headers.hasMoreElements()) {
+ String h = (String) headers.nextElement();
+ String[] splitted = StringUtils.split(h, ",");
+
+ for (String s : splitted) {
+ if (sb.length() > 0)
+ sb.append(",");
+ sb.append(s.trim());
+ }
+ }
+ }
+
+ if (sb.length() > 0)
+ sb.append(",");
+ sb.append(request.getRemoteAddr());
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Remote ip address : " + sb.toString());
+ }
+ return sb.toString();
+ }
}
Added: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapperDev.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapperDev.java (rev 0)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapperDev.java 2011-12-23 15:53:53 UTC (rev 94)
@@ -0,0 +1,356 @@
+/*
+ * 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.wrappers;
+
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import net.sourceforge.statelessfilter.backend.ISessionBackend;
+import net.sourceforge.statelessfilter.backend.ISessionData;
+import net.sourceforge.statelessfilter.filter.Configuration;
+import net.sourceforge.statelessfilter.session.SessionData;
+import net.sourceforge.statelessfilter.session.StatelessSession;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Stateless request wrapper
+ *
+ * @author Nicolas Richeton - Capgemini
+ *
+ */
+public class StatelessRequestWrapperDev 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(StatelessRequestWrapperDev.class);
+ HttpServletRequest originalRequest = null;
+
+ StatelessSession session = null;
+
+ /**
+ * Create a new request wrapper.
+ *
+ * @param request
+ * @param backends
+ */
+ public StatelessRequestWrapperDev(HttpServletRequest request,
+ Configuration backends) {
+ super(request);
+ originalRequest = request;
+ this.backends = backends;
+ }
+
+ /**
+ * Returns real server session.
+ *
+ * @return
+ */
+ public HttpSession getServerSession() {
+ return super.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;
+ }
+
+ /**
+ * (non-Javadoc)
+ *
+ * @see javax.servlet.http.HttpServletRequestWrapper#getSession(boolean)
+ */
+ @Override
+ public HttpSession getSession(boolean create) {
+ if (create) {
+ return getSession();
+ }
+
+ if (session == null) {
+ try {
+ session = restoreSession();
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ return session;
+ }
+
+ /**
+ * Stores session in backends
+ *
+ * @param myrequest
+ * @param myresponse
+ * @throws IOException
+ */
+ public void writeSession(HttpServletRequest myrequest,
+ HttpServletResponse myresponse) throws IOException {
+
+ // If there is a session (session requested by the application)
+ if (session != null) {
+
+ // Session has changed ?
+ if (backends.useDirty && !session.isDirty()) {
+ logger.info("Session has not changed."); //$NON-NLS-1$
+ return;
+ }
+
+ long requestId = System.currentTimeMillis();
+ session.setNew(false);
+
+ // Dispatch attributes between backends according to configuration
+
+ // Session attributes
+ Map<String, Object> sessionAttributes = session.getContent();
+ // Session attributes which were modified during the request
+ List<String> modifiedAttributes = session.getDirtyAttributes();
+
+ // Backends flagged as dirty during dispatch
+ List<String> modifiedBackends = new ArrayList<String>();
+
+ // 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>>();
+
+ for (String name : sessionAttributes.keySet()) {
+ if (isAttributeMapped(name)) {
+ // Add attribute to backend session
+ getBackendSessionData(attributesDispatched,
+ backends.backendsAttributeMapping.get(name),
+ requestId).getContent().put(name,
+ sessionAttributes.get(name));
+
+ // Add attribute name as modified for this backend
+ if( remainingModifiedAttributes.contains(name))
+ getBackendModifiedAttributes(modifiedAttributesDispatched,
+ backends.backendsAttributeMapping.get(name)).add(
+ name);
+
+ // Set backend modified.
+ setModified(modifiedBackends, modifiedAttributes, name);
+
+ logger.info(INFO_USES, name,
+ backends.backendsAttributeMapping.get(name));
+
+ } else {
+ getBackendSessionData(attributesDispatched,
+ backends.defaultBackend, requestId).getContent()
+ .put(name, sessionAttributes.get(name));
+
+ if( remainingModifiedAttributes.contains(name))
+ getBackendModifiedAttributes(modifiedAttributesDispatched,
+ backends.defaultBackend).add(name);
+
+ setModified(modifiedBackends, modifiedAttributes, name);
+ logger.info(INFO_USES_DEFAULT, name,
+ backends.defaultBackend);
+
+ }
+
+ // Remove attribute from remaining attributes to process
+ remainingModifiedAttributes.remove(name);
+ }
+
+ // Process remaining attributes
+ for (String name : remainingModifiedAttributes) {
+ if (isAttributeMapped(name)) {
+ getBackendModifiedAttributes(modifiedAttributesDispatched,
+ backends.backendsAttributeMapping.get(name)).add(
+ name);
+
+ setModified(modifiedBackends, modifiedAttributes, name);
+ logger.info(INFO_USES, name,
+ backends.backendsAttributeMapping.get(name));
+ } else {
+ getBackendModifiedAttributes(modifiedAttributesDispatched,
+ backends.defaultBackend).add(name);
+
+ setModified(modifiedBackends, modifiedAttributes, name);
+
+ logger.info(INFO_USES_DEFAULT, name,
+ backends.defaultBackend);
+ }
+ }
+
+ if (session.isPropertyDirty()) {
+ // Force update on all backends.
+ logger.info("Session properties have changed. Forcing update on all backends."); //$NON-NLS-1$
+
+ for (String back : backends.backends.keySet()) {
+ ISessionBackend backend = backends.backends.get(back);
+ backend.save(
+ getBackendSessionData(attributesDispatched, back,
+ requestId), modifiedAttributesDispatched
+ .get(back), originalRequest, myresponse);
+ }
+ } else {
+ // Update only modified backends.
+ for (String back : modifiedBackends) {
+ ISessionBackend backend = backends.backends.get(back);
+ backend.save(
+ getBackendSessionData(attributesDispatched, back,
+ requestId), modifiedAttributesDispatched
+ .get(back), originalRequest, myresponse);
+ }
+ }
+ }
+
+ }
+
+ /**
+ * Restore a session by querying all backends. If session cannot be
+ * restored, a new one is created.
+ *
+ *
+ * @return the restored or created session.
+ * @throws NoSuchAlgorithmException
+ */
+ private StatelessSession createSession() throws NoSuchAlgorithmException {
+
+ StatelessSession s = restoreSession();
+
+ if (s == null) {
+ s = new StatelessSession(this);
+ s.init(true);
+ }
+
+ return s;
+ }
+
+ /**
+ * Get current data for session backend. Creates a new ISessionData if
+ * necessary.
+ *
+ * @param dispatched
+ * @param backendName
+ * @param requestId
+ * @return
+ */
+ private ISessionData getBackendSessionData(
+ Map<String, ISessionData> dispatched, String backendName,
+ long requestId) {
+
+ // If session data exists for this backend, return immediately.
+ if (dispatched.containsKey(backendName)) {
+ return dispatched.get(backendName);
+ }
+
+ // Else create empty session data for this backend.
+ SessionData data = new SessionData();
+ data.setId(session.getId());
+ data.setCreationTime(session.getCreationTime());
+ data.setValid(session.isValid());
+ data.setRequestId(requestId);
+ dispatched.put(backendName, data);
+ return data;
+ }
+
+ private List<String> getBackendModifiedAttributes(
+ Map<String, List<String>> modifiedAttributesDispatched,
+ String backendName) {
+ if (modifiedAttributesDispatched.containsKey(backendName)) {
+ return modifiedAttributesDispatched.get(backendName);
+ }
+
+ List<String> result = new ArrayList<String>();
+ modifiedAttributesDispatched.put(backendName, result);
+
+ return result;
+ }
+
+ /**
+ * Checks if attrName is specifically mapped to a session backend in
+ * configuration.
+ *
+ * @param attrName
+ * session attribute name.
+ * @return true if mapped to a session backend, false if using default.
+ */
+ private boolean isAttributeMapped(String attrName) {
+ if (backends != null && backends.backendsAttributeMapping != null) {
+ return backends.backendsAttributeMapping.containsKey(attrName);
+ }
+
+ return false;
+ }
+
+ private StatelessSession restoreSession() throws NoSuchAlgorithmException {
+ StatelessSession s = new StatelessSession(this);
+ ISessionData data = null;
+ boolean restored = false;
+ // long requestId = -1;
+
+ s.init(false);
+ for (ISessionBackend back : backends.backends.values()) {
+ data = back.restore(originalRequest);
+
+ // Mark session restored if at least one backend returned a session
+ if (data != null) {
+ restored = true;
+ s.merge(data);
+ }
+ }
+
+ // Reset session
+ if (!restored) {
+ return null;
+ }
+ return s;
+ }
+
+ private void setModified(List<String> modifiedBackends,
+ List<String> modifiedAttributes, String attributeName) {
+ String backend = backends.backendsAttributeMapping.get(attributeName);
+
+ if (StringUtils.isEmpty(backend)) {
+ backend = backends.defaultBackend;
+ }
+
+ if (modifiedAttributes.contains(attributeName)
+ && !modifiedBackends.contains(backend)) {
+
+ modifiedBackends.add(backend);
+
+ logger.info("Flagging backend {} as modified", backend); //$NON-NLS-1$
+ }
+ }
+}
Added: trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/backend/XForwardedForTest.java
===================================================================
--- trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/backend/XForwardedForTest.java (rev 0)
+++ trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/backend/XForwardedForTest.java 2011-12-23 15:53:53 UTC (rev 94)
@@ -0,0 +1,73 @@
+/*
+ * 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.backend;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import junit.framework.TestCase;
+import net.sourceforge.statelessfilter.backend.support.CookieBackendSupport;
+
+import org.springframework.mock.web.MockHttpServletRequest;
+
+public class XForwardedForTest extends TestCase {
+
+ public void testXForwardedFor() {
+
+ MockHttpServletRequest request = new MockHttpServletRequest();
+ request.addHeader("X-Forwarded-For", "client1, proxy1, proxy2");
+ request.addHeader("X-Forwarded-For", "proxy3");
+ request.setRemoteAddr("proxy4");
+
+ MockCookieBackendSupport cbs = new MockCookieBackendSupport();
+ String result = cbs.getFullRemoteAddr(request);
+
+ assertEquals("client1,proxy1,proxy2,proxy3,proxy4", result);
+
+ }
+
+ public class MockCookieBackendSupport extends CookieBackendSupport {
+
+ @Override
+ public void save(ISessionData session, List<String> dirtyAttributes, HttpServletRequest request,
+ HttpServletResponse response) throws IOException {
+
+ }
+
+ @Override
+ public ISessionData restore(HttpServletRequest request) {
+ return null;
+ }
+
+ @Override
+ public String getId() {
+ return null;
+ }
+
+ @Override
+ public void destroy() {
+
+ }
+
+ public String getFullRemoteAddr(HttpServletRequest request) {
+ return super.getFullRemoteAddr(request);
+ }
+ }
+
+}
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-memcache/pom.xml 2011-12-23 15:53:53 UTC (rev 94)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-memcache</artifactId>
@@ -15,8 +15,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.9-SNAPSHOT</version>
- <scope>compile</scope>
+ <version>0.8.1-SNAPSHOT</version>
</dependency>
<dependency> <groupId>spy</groupId>
<artifactId>memcached</artifactId>
Modified: trunk/stateless-memcache/src/main/java/net/sourceforge/statelessfilter/backend/memcache/MemcacheBackend.java
===================================================================
--- trunk/stateless-memcache/src/main/java/net/sourceforge/statelessfilter/backend/memcache/MemcacheBackend.java 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-memcache/src/main/java/net/sourceforge/statelessfilter/backend/memcache/MemcacheBackend.java 2011-12-23 15:53:53 UTC (rev 94)
@@ -17,6 +17,7 @@
import java.io.IOException;
import java.net.InetSocketAddress;
+import java.security.SignatureException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -49,6 +50,7 @@
*
*/
public class MemcacheBackend extends CookieBackendSupport {
+ private static final String DESERIALIZE_ERROR = "Cannot deserialize session. A new one will be created"; //$NON-NLS-1$
private static final String ID = "memcache"; //$NON-NLS-1$
private static final String PARAM_SERVER = "server"; //$NON-NLS-1$
private static final char SEPARATOR = ':';
@@ -113,41 +115,50 @@
*/
@Override
public ISessionData restore(HttpServletRequest request) {
- byte[] data = getCookieData(request, null);
+ try {
+ byte[] data = getCookieData(request, null);
- if (data != null) {
- String id = new String(data);
- request.setAttribute(SESSION_ID, id);
+ if (data != null) {
+ String id = new String(data);
+ request.setAttribute(SESSION_ID, id);
- CookieDataSupport s = (CookieDataSupport) c.get(id);
- if (s != null && s.isValid()
- && s.getRemoteAddress().equals(request.getRemoteAddr())) {
- return s;
+ CookieDataSupport s = (CookieDataSupport) c.get(id);
+ if (s != null && s.isValid()
+ && s.getRemoteAddress().equals(getFullRemoteAddr(request))) {
+ return s;
+ }
}
+ } catch (SignatureException e) {
+ logger.info(DESERIALIZE_ERROR, e);
}
return null;
}
-
/**
- * @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)
*/
@Override
- public void save(ISessionData session, List<String> dirtyAttributes, HttpServletRequest request,
- HttpServletResponse response) throws IOException {
+ public void save(ISessionData session, List<String> dirtyAttributes,
+ HttpServletRequest request, HttpServletResponse response)
+ throws IOException {
+ try {
+ if (session != null) {
+ CookieDataSupport cookieData = new CookieDataSupport(session);
+ cookieData.setRemoteAddress(getFullRemoteAddr(request));
- if (session != null) {
- CookieDataSupport cookieData = new CookieDataSupport(session);
- cookieData.setRemoteAddress(request.getRemoteAddr());
+ c.set(session.getId(), 3600, cookieData);
- c.set(session.getId(), 3600, cookieData);
+ if (request.getAttribute(SESSION_ID) == null) {
+ setCookieData(request, response, session.getId().getBytes());
+ }
+ } else {
+ setCookieData(request, response, null);
+ }
- if (request.getAttribute(SESSION_ID) == null) {
- setCookieData(request, response, session.getId().getBytes());
- }
- } else {
- setCookieData(request, response, null);
+ } catch (SignatureException e) {
+ throw new IOException(e);
}
-
}
}
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-processor-cookie/pom.xml 2011-12-23 15:53:53 UTC (rev 94)
@@ -3,7 +3,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
</parent>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
@@ -13,15 +13,13 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
- <version>1.4</version>
- <type>jar</type>
- <scope>compile</scope>
+ <version>2.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
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-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-processor-cookie/src/main/java/net/sourceforge/statelessfilter/processor/request/Cookie2AttributeProcessor.java 2011-12-23 15:53:53 UTC (rev 94)
@@ -170,6 +170,11 @@
if (!StringUtils.equals(previousValue, cookieContent)) {
Cookie c = CookieUtils.createCookie(cookieName, cookieContent,
domain, path, maxAge, secret != null, secret);
+ // As soon as we send a session cookie, the response must not be
+ // cached.
+ ((HttpServletResponse) response).setHeader("Cache-Control",
+ "private, no-cache, no-store, must-revalidate");
+
((HttpServletResponse) response).addCookie(c);
}
}
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-12-22 16:18:16 UTC (rev 93)
+++ trunk/stateless-session/pom.xml 2011-12-23 15:53:53 UTC (rev 94)
@@ -2,7 +2,7 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-session</artifactId>
@@ -15,7 +15,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.9-SNAPSHOT</version>
+ <version>0.8.1-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-12-22 16:18:27
|
Revision: 93
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=93&view=rev
Author: nricheton
Date: 2011-12-22 16:18:16 +0000 (Thu, 22 Dec 2011)
Log Message:
-----------
Cleanup
Modified Paths:
--------------
trunk/stateless-cookie-plain/pom.xml
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-12-22 16:17:49 UTC (rev 92)
+++ trunk/stateless-cookie-plain/pom.xml 2011-12-22 16:18:16 UTC (rev 93)
@@ -5,10 +5,8 @@
<version>0.9-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.9-SNAPSHOT</version>
<build>
<plugins>
</plugins>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-22 16:17:58
|
Revision: 92
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=92&view=rev
Author: nricheton
Date: 2011-12-22 16:17:49 +0000 (Thu, 22 Dec 2011)
Log Message:
-----------
Cleanup
Modified Paths:
--------------
trunk/stateless-memcache/pom.xml
trunk/stateless-processor-cookie/pom.xml
trunk/stateless-session/pom.xml
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-12-22 16:16:53 UTC (rev 91)
+++ trunk/stateless-memcache/pom.xml 2011-12-22 16:17:49 UTC (rev 92)
@@ -5,10 +5,8 @@
<version>0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.9-SNAPSHOT</version>
<build>
<plugins>
</plugins>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-12-22 16:16:53 UTC (rev 91)
+++ trunk/stateless-processor-cookie/pom.xml 2011-12-22 16:17:49 UTC (rev 92)
@@ -5,10 +5,8 @@
<groupId>net.sourceforge.statelessfilter</groupId>
<version>0.9-SNAPSHOT</version>
</parent>
- <groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.9-SNAPSHOT</version>
<description>Persist request attributes to a cookie.
id: processor-cookie</description>
<dependencies>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-12-22 16:16:53 UTC (rev 91)
+++ trunk/stateless-session/pom.xml 2011-12-22 16:17:49 UTC (rev 92)
@@ -5,10 +5,8 @@
<version>0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.9-SNAPSHOT</version>
<build>
<plugins>
</plugins>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-22 16:17:03
|
Revision: 91
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=91&view=rev
Author: nricheton
Date: 2011-12-22 16:16:53 +0000 (Thu, 22 Dec 2011)
Log Message:
-----------
Cleanup
Modified Paths:
--------------
trunk/stateless-core/pom.xml
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieDataSupport.java
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-12-22 16:15:00 UTC (rev 90)
+++ trunk/stateless-core/pom.xml 2011-12-22 16:16:53 UTC (rev 91)
@@ -7,7 +7,6 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.9-SNAPSHOT</version>
<build>
<plugins>
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-12-22 16:15:00 UTC (rev 90)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/backend/support/CookieDataSupport.java 2011-12-22 16:16:53 UTC (rev 91)
@@ -15,7 +15,6 @@
*/
package net.sourceforge.statelessfilter.backend.support;
-import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -90,7 +89,7 @@
return valid;
}
- public void setContent(HashMap<String, Object> content) {
+ public void setContent(Map<String, Object> content) {
this.content = new ConcurrentHashMap<String, Object>(content);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-22 16:15:10
|
Revision: 90
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=90&view=rev
Author: nricheton
Date: 2011-12-22 16:15:00 +0000 (Thu, 22 Dec 2011)
Log Message:
-----------
Cleanup
Modified Paths:
--------------
trunk/stateless-cookie-aes/pom.xml
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-12-22 16:13:00 UTC (rev 89)
+++ trunk/stateless-cookie-aes/pom.xml 2011-12-22 16:15:00 UTC (rev 90)
@@ -5,10 +5,8 @@
<version>0.9-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.9-SNAPSHOT</version>
<dependencies>
<dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-22 16:13:07
|
Revision: 89
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=89&view=rev
Author: nricheton
Date: 2011-12-22 16:13:00 +0000 (Thu, 22 Dec 2011)
Log Message:
-----------
Clean up. jackson update
Modified Paths:
--------------
trunk/stateless-cookie-aes-json/pom.xml
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-12-22 15:29:19 UTC (rev 88)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-12-22 16:13:00 UTC (rev 89)
@@ -5,10 +5,8 @@
<version>0.9-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.9-SNAPSHOT</version>
<build>
<plugins>
<plugin>
@@ -54,16 +52,12 @@
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
- <version>1.3.0</version>
- <type>jar</type>
- <scope>compile</scope>
+ <version>1.9.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
- <version>1.3.0</version>
- <type>jar</type>
- <scope>compile</scope>
+ <version>1.9.3</version>
</dependency>
</dependencies>
</project>
\ 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-12-22 15:29:25
|
Revision: 88
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=88&view=rev
Author: nricheton
Date: 2011-12-22 15:29:19 +0000 (Thu, 22 Dec 2011)
Log Message:
-----------
Javadoc
Modified Paths:
--------------
trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java
trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java
Modified: trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java
===================================================================
--- trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java 2011-12-22 15:21:26 UTC (rev 87)
+++ trunk/stateless-cookie-aes/src/main/java/net/sourceforge/statelessfilter/backend/aescookie/AESCookieBackend.java 2011-12-22 15:29:19 UTC (rev 88)
@@ -27,9 +27,7 @@
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
-import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
-import javax.crypto.IllegalBlockSizeException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest;
@@ -46,8 +44,8 @@
import org.slf4j.LoggerFactory;
/**
- * Backend based on an uncrypted cookie. Can be used for non sensitive data.
- * Cookie can be compressed to save bandwidth.
+ * Backend based on an AES-encrypted cookie. Cookie can be compressed to save
+ * bandwidth.
*
* <p>
* Parameters :
@@ -110,6 +108,8 @@
}
/**
+ * Loads key and iv for encryption and performs normal init.
+ *
* @throws Exception
* @see com.capgemini.stateless.backend.plaincookie.ISessionBackend#init(java.util.Map)
*/
Modified: trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java
===================================================================
--- trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java 2011-12-22 15:21:26 UTC (rev 87)
+++ trunk/stateless-cookie-aes-json/src/main/java/net/sourceforge/statelessfilter/backend/jsonaescookie/JSONAESCookieBackend.java 2011-12-22 15:29:19 UTC (rev 88)
@@ -19,9 +19,7 @@
import java.util.List;
import java.util.Map;
-import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
-import javax.crypto.IllegalBlockSizeException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest;
@@ -39,8 +37,8 @@
import org.slf4j.LoggerFactory;
/**
- * Backend based on an uncrypted cookie. Can be used for non sensitive data.
- * Cookie can be compressed to save bandwidth.
+ * Backend based on an AES-encrypted cookie. Cookie can be compressed to save
+ * bandwidth.
*
* <p>
* Parameters :
@@ -103,6 +101,8 @@
}
/**
+ * Loads key and iv for encryption and performs normal init.
+ *
* @throws Exception
* @see com.capgemini.stateless.backend.plaincookie.ISessionBackend#init(java.util.Map)
*/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-12-22 15:21:37
|
Revision: 87
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=87&view=rev
Author: nricheton
Date: 2011-12-22 15:21:26 +0000 (Thu, 22 Dec 2011)
Log Message:
-----------
Cleanup
Some info logs changed to debug
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapper.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-07-27 10:30:08 UTC (rev 86)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/BufferedHttpResponseWrapper.java 2011-12-22 15:21:26 UTC (rev 87)
@@ -15,7 +15,6 @@
*/
package net.sourceforge.statelessfilter.wrappers;
-import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
@@ -78,9 +77,8 @@
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$
+ throw new IllegalStateException("The Servlet API forbids calling getOutputStream( ) after" //$NON-NLS-1$
+ + " getWriter( ) has been called"); //$NON-NLS-1$
}
if (this.outputStream == null) {
@@ -94,15 +92,13 @@
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$
+ 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());
+ Writer writer = new OutputStreamWriter(this.bufferedServletOut, this.getResponse().getCharacterEncoding());
this.printWriter = new PrintWriter(writer);
}
@@ -165,9 +161,9 @@
@Override
public void setBufferSize(int size) {
- if( this.bufferedServletOut.hasData() ) {
- throw new IllegalStateException("Content has already been sent. No Setbuffer allowed");
-}
+ 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/StatelessRequestWrapper.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapper.java 2011-07-27 10:30:08 UTC (rev 86)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/wrappers/StatelessRequestWrapper.java 2011-12-22 15:21:26 UTC (rev 87)
@@ -42,258 +42,279 @@
*
*/
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;
- private boolean sessionWritten;
+ StatelessSession session = null;
+ private boolean sessionWritten;
- public boolean isSessionWritten() {
- return sessionWritten;
- }
+ public boolean isSessionWritten() {
+ return sessionWritten;
+ }
- /**
- * Create a new request wrapper.
- *
- * @param request
- * @param backends
- */
- public StatelessRequestWrapper(HttpServletRequest request, Configuration backends) {
- super(request);
- originalRequest = request;
- this.backends = backends;
- }
+ /**
+ * Create a new request wrapper.
+ *
+ * @param request
+ * @param backends
+ */
+ public StatelessRequestWrapper(HttpServletRequest request, Configuration backends) {
+ super(request);
+ originalRequest = request;
+ this.backends = backends;
+ }
- /**
- * Returns real server session.
- *
- * @return
- */
- public HttpSession getServerSession() {
- return super.getSession();
- }
+ /**
+ * Returns real server session.
+ *
+ * @return
+ */
+ public HttpSession getServerSession() {
+ return super.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;
- }
+ /**
+ * (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;
+ }
- /**
- * (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(boolean)
+ */
+ @Override
+ public HttpSession getSession(boolean create) {
+ if (create) {
+ return getSession();
+ }
- if (session == null) {
- try {
- session = restoreSession();
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException(e);
- }
- }
+ if (session == null) {
+ try {
+ session = restoreSession();
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ }
- return session;
- }
+ return session;
+ }
- /**
- * Stores session in backends
- *
- * @param myrequest
- * @param myresponse
- * @throws IOException
- */
- public void writeSession(HttpServletRequest myrequest, HttpServletResponse myresponse) throws IOException {
+ /**
+ * Stores session in backends
+ *
+ * @param myrequest
+ * @param myresponse
+ * @throws IOException
+ */
+ public void writeSession(HttpServletRequest myrequest, HttpServletResponse myresponse) throws IOException {
- // If there is a session (session requested by the application)
- if (session != null) {
+ // If there is a session (session requested by the application)
+ if (session != null) {
- // Session has changed ?
- if (backends.useDirty && !session.isDirty()) {
- logger.info("Session has not changed."); //$NON-NLS-1$
- return;
- }
+ // Session has changed ?
+ if (backends.useDirty && !session.isDirty()) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Session has not changed."); //$NON-NLS-1$
+ }
+ return;
+ }
- long requestId = System.currentTimeMillis();
- session.setNew(false);
+ long requestId = System.currentTimeMillis();
+ session.setNew(false);
- // Dispatch attributes between backends according to configuration
+ // Dispatch attributes between backends according to configuration
- // Session attributes
- Map<String, Object> sessionAttributes = session.getContent();
- // Session attributes which were modified during the request
- List<String> modifiedAttributes = session.getDirtyAttributes();
+ // Session attributes
+ Map<String, Object> sessionAttributes = session.getContent();
+ // Session attributes which were modified during the request
+ List<String> modifiedAttributes = session.getDirtyAttributes();
- // Backends flagged as dirty during dispatch
- List<String> modifiedBackends = new ArrayList<String>();
+ // Backends flagged as dirty during dispatch
+ List<String> modifiedBackends = new ArrayList<String>();
- // 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>>();
+ // 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>>();
- for (String name : sessionAttributes.keySet()) {
- if (isAttributeMapped(name)) {
- getBackendSessionData(attributesDispatched, backends.backendsAttributeMapping.get(name), requestId)
- .getContent().put(name, sessionAttributes.get(name));
+ for (String name : sessionAttributes.keySet()) {
+ if (isAttributeMapped(name)) {
+ getBackendSessionData(attributesDispatched, backends.backendsAttributeMapping.get(name), requestId)
+ .getContent().put(name, sessionAttributes.get(name));
- setModified(modifiedBackends, modifiedAttributes, name);
+ setModified(modifiedBackends, modifiedAttributes, name);
- logger.info(INFO_USES, name, backends.backendsAttributeMapping.get(name));
+ logger.info(INFO_USES, name, backends.backendsAttributeMapping.get(name));
- } else {
- getBackendSessionData(attributesDispatched, backends.defaultBackend, requestId).getContent().put(
- name, sessionAttributes.get(name));
+ } else {
+ getBackendSessionData(attributesDispatched, backends.defaultBackend, requestId).getContent().put(
+ name, sessionAttributes.get(name));
- setModified(modifiedBackends, modifiedAttributes, name);
- logger.info(INFO_USES_DEFAULT, name, backends.defaultBackend);
+ setModified(modifiedBackends, modifiedAttributes, name);
+ logger.info(INFO_USES_DEFAULT, name, backends.defaultBackend);
- }
+ }
- // Remove attribute from remaining attributes to process
- remainingModifiedAttributes.remove(name);
- }
+ // Remove attribute from remaining attributes to process
+ remainingModifiedAttributes.remove(name);
+ }
- // Process remaining attributes
- for (String name : remainingModifiedAttributes) {
- if (isAttributeMapped(name)) {
- setModified(modifiedBackends, modifiedAttributes, name);
- logger.info(INFO_USES, name, backends.backendsAttributeMapping.get(name));
- } else {
- setModified(modifiedBackends, modifiedAttributes, name);
- logger.info(INFO_USES_DEFAULT, name, backends.defaultBackend);
- }
- }
+ // Process remaining attributes
+ for (String name : remainingModifiedAttributes) {
+ if (isAttributeMapped(name)) {
+ setModified(modifiedBackends, modifiedAttributes, name);
+ logger.info(INFO_USES, name, backends.backendsAttributeMapping.get(name));
+ } else {
+ setModified(modifiedBackends, modifiedAttributes, name);
+ logger.info(INFO_USES_DEFAULT, name, backends.defaultBackend);
+ }
+ }
- if (session.isPropertyDirty()) {
- // Force update on all backends.
- logger.info("Session properties have changed. Forcing update on all backends.");
+ if (session.isPropertyDirty()) {
+ // Force update on all backends.
+ logger.info("Session properties have changed. Forcing update on all backends.");
- for (String back : backends.backends.keySet()) {
- ISessionBackend backend = backends.backends.get(back);
- backend.save(getBackendSessionData(attributesDispatched, back, requestId),
- modifiedAttributesDispatched.get(back), originalRequest, myresponse);
- }
- } else {
- // Update only modified backends.
- for (String back : modifiedBackends) {
- ISessionBackend backend = backends.backends.get(back);
- backend.save(getBackendSessionData(attributesDispatched, back, requestId),
- modifiedAttributesDispatched.get(back), originalRequest, myresponse);
- }
- }
- }
+ for (String back : backends.backends.keySet()) {
+ ISessionBackend backend = backends.backends.get(back);
+ backend.save(getBackendSessionData(attributesDispatched, back, requestId),
+ modifiedAttributesDispatched.get(back), originalRequest, myresponse);
+ }
+ } else {
+ // Update only modified backends.
+ for (String back : modifiedBackends) {
+ ISessionBackend backend = backends.backends.get(back);
+ backend.save(getBackendSessionData(attributesDispatched, back, requestId),
+ modifiedAttributesDispatched.get(back), originalRequest, myresponse);
+ }
+ }
+ }
- sessionWritten = true;
- }
+ sessionWritten = true;
+ }
- /**
- * Create a session using all backends.
- *
- * @return
- * @throws NoSuchAlgorithmException
- */
- private StatelessSession createSession() throws NoSuchAlgorithmException {
+ /**
+ * Create a session using all backends.
+ *
+ * @return
+ * @throws NoSuchAlgorithmException
+ */
+ private StatelessSession createSession() throws NoSuchAlgorithmException {
- StatelessSession s = restoreSession();
+ StatelessSession s = restoreSession();
- if (s == null) {
- s = new StatelessSession(this);
- s.init(true);
- }
+ if (s == null) {
+ s = new StatelessSession(this);
+ s.init(true);
+ }
- return s;
- }
+ return s;
+ }
- /**
- * Get current data for session backend. Creates a new ISessionData if
- * necessary.
- *
- * @param dispatched
- * @param name
- * @param requestId
- * @return
- */
- private ISessionData getBackendSessionData(Map<String, ISessionData> dispatched, String name, long requestId) {
+ /**
+ * Get current data for session backend. Creates a new ISessionData if
+ * necessary.
+ *
+ * @param dispatched
+ * @param name
+ * @param requestId
+ * @return
+ */
+ private ISessionData getBackendSessionData(Map<String, ISessionData> dispatched, String name, long requestId) {
- if (dispatched.containsKey(name)) {
- return dispatched.get(name);
- }
+ if (dispatched.containsKey(name)) {
+ return dispatched.get(name);
+ }
- SessionData data = new SessionData();
- data.setId(session.getId());
- data.setCreationTime(session.getCreationTime());
- data.setValid(session.isValid());
- data.setRequestId(requestId);
- dispatched.put(name, data);
- return data;
- }
+ SessionData data = new SessionData();
+ data.setId(session.getId());
+ data.setCreationTime(session.getCreationTime());
+ data.setValid(session.isValid());
+ data.setRequestId(requestId);
+ dispatched.put(name, data);
+ return data;
+ }
- private boolean isAttributeMapped(String attrName) {
- if (backends != null && backends.backendsAttributeMapping != null) {
- return backends.backendsAttributeMapping.containsKey(attrName);
- }
+ /**
+ * Check if an attribute is mapped to a backend by configuration.
+ * <p>
+ * Returns null if there is no configuration for this attribute. The default
+ * backend should be used in that case.
+ *
+ * @param attrName
+ * @return
+ */
+ private boolean isAttributeMapped(String attrName) {
+ if (backends != null && backends.backendsAttributeMapping != null) {
+ return backends.backendsAttributeMapping.containsKey(attrName);
+ }
- return false;
- }
+ return false;
+ }
- private StatelessSession restoreSession() throws NoSuchAlgorithmException {
- StatelessSession s = new StatelessSession(this);
- ISessionData data = null;
- boolean restored = false;
- // long requestId = -1;
+ private StatelessSession restoreSession() throws NoSuchAlgorithmException {
+ StatelessSession s = new StatelessSession(this);
+ ISessionData data = null;
+ boolean restored = false;
+ // long requestId = -1;
- s.init(false);
- for (ISessionBackend back : backends.backends.values()) {
- data = back.restore(originalRequest);
+ s.init(false);
+ for (ISessionBackend back : backends.backends.values()) {
+ data = back.restore(originalRequest);
- // Mark session restored if at least one backend returned a session
- if (data != null) {
- restored = true;
- s.merge(data);
- }
- }
+ // Mark session restored if at least one backend returned a session
+ if (data != null) {
+ restored = true;
+ s.merge(data);
+ }
+ }
- // Reset session
- if (!restored) {
- return null;
- }
- return s;
- }
+ // Reset session
+ if (!restored) {
+ return null;
+ }
+ return s;
+ }
- private void setModified(List<String> modifiedBackends, List<String> modifiedAttributes, String attributeName) {
- String backend = backends.backendsAttributeMapping.get(attributeName);
+ /**
+ * If attributeName is in modifiedAttributes, then the corresponding backend
+ * is added to modifiedBackends.
+ *
+ * @param modifiedBackends
+ * @param modifiedAttributes
+ * @param attributeName
+ */
+ private void setModified(List<String> modifiedBackends, List<String> modifiedAttributes, String attributeName) {
+ String backend = backends.backendsAttributeMapping.get(attributeName);
- if (StringUtils.isEmpty(backend)) {
- backend = backends.defaultBackend;
- }
+ if (StringUtils.isEmpty(backend)) {
+ backend = backends.defaultBackend;
+ }
- if (modifiedAttributes.contains(attributeName) && !modifiedBackends.contains(backend)) {
+ if (modifiedAttributes.contains(attributeName) && !modifiedBackends.contains(backend)) {
- modifiedBackends.add(backend);
+ modifiedBackends.add(backend);
- logger.info("Flagging backend {} as modified", backend);
- }
- }
+ if (logger.isDebugEnabled()) {
+ logger.info("Flagging backend {} as modified", backend);
+ }
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-07-27 10:30:14
|
Revision: 86
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=86&view=rev
Author: nricheton
Date: 2011-07-27 10:30:08 +0000 (Wed, 27 Jul 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-07-27 10:29:43 UTC (rev 85)
+++ trunk/pom.xml 2011-07-27 10:30:08 UTC (rev 86)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.8</version>
+ <version>0.9-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.8</connection>
- <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.8</developerConnection>
- <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.8</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-07-27 10:29:43 UTC (rev 85)
+++ trunk/stateless-cookie-aes/pom.xml 2011-07-27 10:30:08 UTC (rev 86)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8</version>
+ <version>0.9-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.8</version>
+ <version>0.9-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-07-27 10:29:43 UTC (rev 85)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-07-27 10:30:08 UTC (rev 86)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8</version>
+ <version>0.9-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.8</version>
+ <version>0.9-SNAPSHOT</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-07-27 10:29:43 UTC (rev 85)
+++ trunk/stateless-cookie-plain/pom.xml 2011-07-27 10:30:08 UTC (rev 86)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8</version>
+ <version>0.9-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.8</version>
+ <version>0.9-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-07-27 10:29:43 UTC (rev 85)
+++ trunk/stateless-core/pom.xml 2011-07-27 10:30:08 UTC (rev 86)
@@ -2,12 +2,12 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-07-27 10:29:43 UTC (rev 85)
+++ trunk/stateless-memcache/pom.xml 2011-07-27 10:30:08 UTC (rev 86)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-07-27 10:29:43 UTC (rev 85)
+++ trunk/stateless-processor-cookie/pom.xml 2011-07-27 10:30:08 UTC (rev 86)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.8</version>
+ <version>0.9-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.8</version>
+ <version>0.9-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-07-27 10:29:43 UTC (rev 85)
+++ trunk/stateless-session/pom.xml 2011-07-27 10:30:08 UTC (rev 86)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.8</version>
+ <version>0.9-SNAPSHOT</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8</version>
+ <version>0.9-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-07-27 10:29:49
|
Revision: 85
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=85&view=rev
Author: nricheton
Date: 2011-07-27 10:29:43 +0000 (Wed, 27 Jul 2011)
Log Message:
-----------
[maven-scm] copy for tag stateless-parent-0.8
Added Paths:
-----------
tags/stateless-parent-0.8/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nri...@us...> - 2011-07-27 10:29:35
|
Revision: 84
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=84&view=rev
Author: nricheton
Date: 2011-07-27 10:29:24 +0000 (Wed, 27 Jul 2011)
Log Message:
-----------
[maven-release-plugin] prepare release stateless-parent-0.8
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-07-25 06:24:54 UTC (rev 83)
+++ trunk/pom.xml 2011-07-27 10:29:24 UTC (rev 84)
@@ -4,7 +4,7 @@
<artifactId>stateless-parent</artifactId>
<packaging>pom</packaging>
<name>Stateless filter</name>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</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.8</connection>
+ <developerConnection>scm:svn:https://statelessfilter.svn.sourceforge.net/svnroot/statelessfilter/tags/stateless-parent-0.8</developerConnection>
+ <url>http://statelessfilter.svn.sourceforge.net/viewvc/statelessfilter/tags/stateless-parent-0.8</url>
</scm>
<build>
<plugins>
Modified: trunk/stateless-cookie-aes/pom.xml
===================================================================
--- trunk/stateless-cookie-aes/pom.xml 2011-07-25 06:24:54 UTC (rev 83)
+++ trunk/stateless-cookie-aes/pom.xml 2011-07-27 10:29:24 UTC (rev 84)
@@ -2,19 +2,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-aes</artifactId>
<name>Store: AES cookie</name>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: trunk/stateless-cookie-aes-json/pom.xml
===================================================================
--- trunk/stateless-cookie-aes-json/pom.xml 2011-07-25 06:24:54 UTC (rev 83)
+++ trunk/stateless-cookie-aes-json/pom.xml 2011-07-27 10:29:24 UTC (rev 84)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</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.8-SNAPSHOT</version>
+ <version>0.8</version>
<build>
<plugins>
<plugin>
@@ -27,7 +27,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-cookie-plain/pom.xml
===================================================================
--- trunk/stateless-cookie-plain/pom.xml 2011-07-25 06:24:54 UTC (rev 83)
+++ trunk/stateless-cookie-plain/pom.xml 2011-07-27 10:29:24 UTC (rev 84)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-cookie-plain</artifactId>
<name>Store: Plain cookie</name>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Modified: trunk/stateless-core/pom.xml
===================================================================
--- trunk/stateless-core/pom.xml 2011-07-25 06:24:54 UTC (rev 83)
+++ trunk/stateless-core/pom.xml 2011-07-27 10:29:24 UTC (rev 84)
@@ -2,12 +2,12 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>stateless-core</artifactId>
<name>Core</name>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
<build>
<plugins>
Modified: trunk/stateless-memcache/pom.xml
===================================================================
--- trunk/stateless-memcache/pom.xml 2011-07-25 06:24:54 UTC (rev 83)
+++ trunk/stateless-memcache/pom.xml 2011-07-27 10:29:24 UTC (rev 84)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-memcache</artifactId>
<name>Store: Memcache</name>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
<scope>compile</scope>
</dependency>
<dependency> <groupId>spy</groupId>
Modified: trunk/stateless-processor-cookie/pom.xml
===================================================================
--- trunk/stateless-processor-cookie/pom.xml 2011-07-25 06:24:54 UTC (rev 83)
+++ trunk/stateless-processor-cookie/pom.xml 2011-07-27 10:29:24 UTC (rev 84)
@@ -3,19 +3,19 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
</parent>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-processor-cookie</artifactId>
<name>Request Processor : Cookie</name>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</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.8-SNAPSHOT</version>
+ <version>0.8</version>
<scope>compile</scope>
</dependency>
<dependency>
Modified: trunk/stateless-session/pom.xml
===================================================================
--- trunk/stateless-session/pom.xml 2011-07-25 06:24:54 UTC (rev 83)
+++ trunk/stateless-session/pom.xml 2011-07-27 10:29:24 UTC (rev 84)
@@ -2,13 +2,13 @@
<parent>
<artifactId>stateless-parent</artifactId>
<groupId>net.sourceforge.statelessfilter</groupId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-session</artifactId>
<name>Store: Native Session</name>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
<build>
<plugins>
</plugins>
@@ -17,7 +17,7 @@
<dependency>
<groupId>net.sourceforge.statelessfilter</groupId>
<artifactId>stateless-core</artifactId>
- <version>0.8-SNAPSHOT</version>
+ <version>0.8</version>
<scope>compile</scope>
</dependency>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|