[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