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. |