[gatein-commits] gatein SVN: r4679 - in components/wci/branches/adf: test/core/src/main/java/org/gatein/wci/container and 10 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Oct 15 09:31:40 EDT 2010
Author: alain_defrance
Date: 2010-10-15 09:31:39 -0400 (Fri, 15 Oct 2010)
New Revision: 4679
Added:
components/wci/branches/adf/wci/src/main/doc/
components/wci/branches/adf/wci/src/main/doc/wci-authentication.odp
components/wci/branches/adf/wci/src/main/doc/wci-authentication.pdf
components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/AuthenticationException.java
Modified:
components/wci/branches/adf/jetty/src/main/java/org/gatein/wci/jetty/Jetty6ServletContainerContext.java
components/wci/branches/adf/test/core/src/main/java/org/gatein/wci/container/ServletContainerContextImpl.java
components/wci/branches/adf/test/core/src/main/java/org/gatein/wci/spi/SPIAuthenticationTestCase.java
components/wci/branches/adf/tomcat6/src/main/java/org/gatein/wci/tomcat/TC6ServletContainerContext.java
components/wci/branches/adf/tomcat7/src/main/java/org/gatein/wci/tomcat/TC7ServletContainerContext.java
components/wci/branches/adf/wci/src/main/java/org/gatein/wci/ServletContainer.java
components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/GenericAuthentication.java
components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/GenericAuthenticationResult.java
components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/TicketService.java
components/wci/branches/adf/wci/src/main/java/org/gatein/wci/impl/DefaultServletContainer.java
components/wci/branches/adf/wci/src/main/java/org/gatein/wci/impl/generic/GenericServletContainerContext.java
components/wci/branches/adf/wci/src/main/java/org/gatein/wci/spi/ServletContainerContext.java
Log:
Add tests & documentation
Modified: components/wci/branches/adf/jetty/src/main/java/org/gatein/wci/jetty/Jetty6ServletContainerContext.java
===================================================================
--- components/wci/branches/adf/jetty/src/main/java/org/gatein/wci/jetty/Jetty6ServletContainerContext.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/jetty/src/main/java/org/gatein/wci/jetty/Jetty6ServletContainerContext.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -62,9 +62,9 @@
this.registration = null;
}
- public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validity)
+ public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validityMillis)
{
- return GenericAuthentication.getInstance().login(userName, password, request, response, validity);
+ return GenericAuthentication.getInstance().login(userName, password, request, response, validityMillis);
}
public void logout(HttpServletRequest request, HttpServletResponse response)
Modified: components/wci/branches/adf/test/core/src/main/java/org/gatein/wci/container/ServletContainerContextImpl.java
===================================================================
--- components/wci/branches/adf/test/core/src/main/java/org/gatein/wci/container/ServletContainerContextImpl.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/test/core/src/main/java/org/gatein/wci/container/ServletContainerContextImpl.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -61,7 +61,7 @@
this.registration = null;
}
- public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validity)
+ public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validityMillis)
{
throw new UnsupportedOperationException();
}
Modified: components/wci/branches/adf/test/core/src/main/java/org/gatein/wci/spi/SPIAuthenticationTestCase.java
===================================================================
--- components/wci/branches/adf/test/core/src/main/java/org/gatein/wci/spi/SPIAuthenticationTestCase.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/test/core/src/main/java/org/gatein/wci/spi/SPIAuthenticationTestCase.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -25,6 +25,7 @@
import org.gatein.wci.WebRequest;
import org.gatein.wci.WebResponse;
import org.gatein.wci.authentication.AuthenticationEvent;
+import org.gatein.wci.authentication.AuthenticationException;
import org.gatein.wci.authentication.AuthenticationListener;
import org.gatein.wci.authentication.AuthenticationResult;
import org.gatein.wci.authentication.GenericAuthentication;
@@ -77,9 +78,28 @@
if (result instanceof GenericAuthenticationResult)
{
GenericAuthenticationResult gAuthentication = (GenericAuthenticationResult) result;
+ // Test Ticket Expiration
+ GenericAuthentication.getInstance();
+ String expireTicket = GenericAuthentication.TICKET_SERVICE.createTicket(new Credentials("foo", "bar"), 5);
+ boolean expired = false;
+ try
+ {
+ Thread.sleep(5);
+ GenericAuthentication.TICKET_SERVICE.validateTicket(expireTicket, true);
+ }
+ catch (InterruptedException ignore)
+ {
+ }
+ catch (AuthenticationException ae)
+ {
+ expired = true;
+ }
+ if (!expired) return new FailureResponse(Failure.createAssertionFailure(""));
+
+
// Test Ticket Service
Credentials srcCredentials = new Credentials(username, password);
- String ticket = GenericAuthentication.TICKET_SERVICE.createTicket(srcCredentials);
+ String ticket = GenericAuthentication.TICKET_SERVICE.createTicket(srcCredentials, TicketService.DEFAULT_VALIDITY);
Credentials resultCredentials = GenericAuthentication.TICKET_SERVICE.validateTicket(ticket, false);
assertEquals(srcCredentials.getUsername(), resultCredentials.getUsername());
assertEquals(srcCredentials.getPassword(), resultCredentials.getPassword());
Modified: components/wci/branches/adf/tomcat6/src/main/java/org/gatein/wci/tomcat/TC6ServletContainerContext.java
===================================================================
--- components/wci/branches/adf/tomcat6/src/main/java/org/gatein/wci/tomcat/TC6ServletContainerContext.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/tomcat6/src/main/java/org/gatein/wci/tomcat/TC6ServletContainerContext.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -99,9 +99,9 @@
this.registration = null;
}
- public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validity)
+ public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validityMillis)
{
- return GenericAuthentication.getInstance().login(userName, password, request, response, validity);
+ return GenericAuthentication.getInstance().login(userName, password, request, response, validityMillis);
}
public void logout(HttpServletRequest request, HttpServletResponse response)
Modified: components/wci/branches/adf/tomcat7/src/main/java/org/gatein/wci/tomcat/TC7ServletContainerContext.java
===================================================================
--- components/wci/branches/adf/tomcat7/src/main/java/org/gatein/wci/tomcat/TC7ServletContainerContext.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/tomcat7/src/main/java/org/gatein/wci/tomcat/TC7ServletContainerContext.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -104,7 +104,7 @@
this.registration = null;
}
- public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validity) throws ServletException
+ public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validityMillis) throws ServletException
{
try
{
@@ -114,8 +114,7 @@
{
try
{
- GenericAuthentication.TICKET_SERVICE.setValidityMillis(TicketService.DEFAULT_VALIDITY);
- String ticket = GenericAuthentication.TICKET_SERVICE.createTicket(new Credentials(userName, password));
+ String ticket = GenericAuthentication.TICKET_SERVICE.createTicket(new Credentials(userName, password), TicketService.DEFAULT_VALIDITY);
String url = "j_security_check?j_username=" + userName + "&j_password=" + ticket;
url = response.encodeRedirectURL(url);
response.sendRedirect(url);
Added: components/wci/branches/adf/wci/src/main/doc/wci-authentication.odp
===================================================================
(Binary files differ)
Property changes on: components/wci/branches/adf/wci/src/main/doc/wci-authentication.odp
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: components/wci/branches/adf/wci/src/main/doc/wci-authentication.pdf
===================================================================
(Binary files differ)
Property changes on: components/wci/branches/adf/wci/src/main/doc/wci-authentication.pdf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: components/wci/branches/adf/wci/src/main/java/org/gatein/wci/ServletContainer.java
===================================================================
--- components/wci/branches/adf/wci/src/main/java/org/gatein/wci/ServletContainer.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/wci/src/main/java/org/gatein/wci/ServletContainer.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -102,7 +102,7 @@
* @param userName the username which try to login
* @param password the password of the username
*/
- AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validity) throws ServletException;
+ AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validityMillis) throws ServletException;
/**
* Authentication support.
Added: components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/AuthenticationException.java
===================================================================
--- components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/AuthenticationException.java (rev 0)
+++ components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/AuthenticationException.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -0,0 +1,46 @@
+/*
+* Copyright (C) 2003-2009 eXo Platform SAS.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.gatein.wci.authentication;
+
+/**
+ * @author <a href="mailto:alain.defrance at exoplatform.com">Alain Defrance</a>
+ * @version $Revision$
+ */
+public class AuthenticationException extends RuntimeException
+{
+ public AuthenticationException()
+ {
+ }
+
+ public AuthenticationException(String message)
+ {
+ super(message);
+ }
+
+ public AuthenticationException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ public AuthenticationException(Throwable cause)
+ {
+ super(cause);
+ }
+}
Modified: components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/GenericAuthentication.java
===================================================================
--- components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/GenericAuthentication.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/GenericAuthentication.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -35,10 +35,9 @@
private GenericAuthentication() {}
- public AuthenticationResult login(String login, String password, HttpServletRequest request, HttpServletResponse response, long validity)
+ public AuthenticationResult login(String login, String password, HttpServletRequest request, HttpServletResponse response, long validityMillis)
{
- TICKET_SERVICE.setValidityMillis(validity);
- String ticket = TICKET_SERVICE.createTicket(new Credentials(login, password));
+ String ticket = TICKET_SERVICE.createTicket(new Credentials(login, password), validityMillis);
return new GenericAuthenticationResult(login, ticket);
}
Modified: components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/GenericAuthenticationResult.java
===================================================================
--- components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/GenericAuthenticationResult.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/GenericAuthenticationResult.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -26,7 +26,6 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
-import java.lang.reflect.Method;
/**
* @author <a href="mailto:alain.defrance at exoplatform.com">Alain Defrance</a>
Modified: components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/TicketService.java
===================================================================
--- components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/TicketService.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/wci/src/main/java/org/gatein/wci/authentication/TicketService.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -30,83 +30,69 @@
*/
public class TicketService
{
- public static final long DEFAULT_VALIDITY = 60 * 1000;
-
- protected long validityMillis;
+ public static final long DEFAULT_VALIDITY = 60 * 1000;
- protected final ConcurrentHashMap<String, Ticket> tickets = new ConcurrentHashMap<String, Ticket>();
+ protected final ConcurrentHashMap<String, Ticket> tickets = new ConcurrentHashMap<String, Ticket>();
- protected final Random random = new Random();
+ protected final Random random = new Random();
- public String createTicket(Credentials credentials)
- {
- if (validityMillis < 0)
- {
- throw new IllegalArgumentException();
- }
- if (credentials == null)
- {
- throw new NullPointerException();
- }
- String tokenId = nextTicketId();
- long expirationTimeMillis = System.currentTimeMillis() + validityMillis;
- tickets.put(tokenId, new Ticket(expirationTimeMillis, credentials));
- return tokenId;
- }
+ public String createTicket(Credentials credentials, long validityMillis)
+ {
+ if (validityMillis < 0)
+ {
+ throw new IllegalArgumentException("validityMillis must be positive");
+ }
+ if (credentials == null)
+ {
+ throw new NullPointerException();
+ }
+ String tokenId = nextTicketId();
+ long expirationTimeMillis = System.currentTimeMillis() + validityMillis;
+ tickets.put(tokenId, new Ticket(expirationTimeMillis, credentials));
+ return tokenId;
+ }
- public Credentials validateTicket(String stringKey, boolean remove)
- {
- if (stringKey == null)
- {
- throw new IllegalArgumentException("stringKey is null");
- }
+ public Credentials validateTicket(String stringKey, boolean remove)
+ {
+ if (stringKey == null)
+ {
+ throw new IllegalArgumentException("stringKey is null");
+ }
- Ticket token;
- try
- {
+ Ticket ticket;
if (remove)
{
- token = tickets.remove(stringKey);
+ ticket = tickets.remove(stringKey);
}
else
{
- token = tickets.get(stringKey);
+ ticket = tickets.get(stringKey);
}
- if (token != null)
+ if (ticket != null)
{
- boolean valid = token.getExpirationTimeMillis() > System.currentTimeMillis();
-
- if (valid)
- {
- return token.getPayload();
- }
- else if (!remove)
- {
- tickets.remove(stringKey);
- }
-
- }
- }
- catch (Exception ignore)
- {
- }
+ boolean valid = ticket.getExpirationTimeMillis() > System.currentTimeMillis();
- return null;
- }
+ if (valid)
+ {
+ return ticket.getPayload();
+ }
+ else if (!remove)
+ {
+ tickets.remove(stringKey);
+ }
+ if (!valid)
+ {
+ throw new AuthenticationException("Ticket " + stringKey + " has expired");
+ }
- private String nextTicketId()
- {
- return "wci-ticket-" + random.nextInt();
- }
+ }
- public long getValidityMillis()
- {
- return validityMillis;
- }
+ return null;
+ }
- public void setValidityMillis(long validityMillis)
- {
- this.validityMillis = validityMillis;
- }
+ private String nextTicketId()
+ {
+ return "wci-ticket-" + random.nextInt();
+ }
}
Modified: components/wci/branches/adf/wci/src/main/java/org/gatein/wci/impl/DefaultServletContainer.java
===================================================================
--- components/wci/branches/adf/wci/src/main/java/org/gatein/wci/impl/DefaultServletContainer.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/wci/src/main/java/org/gatein/wci/impl/DefaultServletContainer.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -99,9 +99,9 @@
}
/** . */
- public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validity) throws ServletException
+ public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validityMillis) throws ServletException
{
- AuthenticationResult result = registration.context.login(request, response, userName, password, validity);
+ AuthenticationResult result = registration.context.login(request, response, userName, password, validityMillis);
//
if (!(result instanceof GenericAuthenticationResult))
Modified: components/wci/branches/adf/wci/src/main/java/org/gatein/wci/impl/generic/GenericServletContainerContext.java
===================================================================
--- components/wci/branches/adf/wci/src/main/java/org/gatein/wci/impl/generic/GenericServletContainerContext.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/wci/src/main/java/org/gatein/wci/impl/generic/GenericServletContainerContext.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -130,9 +130,9 @@
this.registration = null;
}
- public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validity)
+ public AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validityMillis)
{
- return GenericAuthentication.getInstance().login(userName, password, request, response, validity);
+ return GenericAuthentication.getInstance().login(userName, password, request, response, validityMillis);
}
public void logout(HttpServletRequest request, HttpServletResponse response)
Modified: components/wci/branches/adf/wci/src/main/java/org/gatein/wci/spi/ServletContainerContext.java
===================================================================
--- components/wci/branches/adf/wci/src/main/java/org/gatein/wci/spi/ServletContainerContext.java 2010-10-15 13:31:22 UTC (rev 4678)
+++ components/wci/branches/adf/wci/src/main/java/org/gatein/wci/spi/ServletContainerContext.java 2010-10-15 13:31:39 UTC (rev 4679)
@@ -82,7 +82,7 @@
* @param userName the username which try to login
* @param password the password of the username
*/
- AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validity) throws ServletException;
+ AuthenticationResult login(HttpServletRequest request, HttpServletResponse response, String userName, String password, long validityMillis) throws ServletException;
/**
* Authentication support.
More information about the gatein-commits
mailing list