[jboss-cvs] jboss-seam/src/main/org/jboss/seam/captcha ...

Gavin King gavin.king at jboss.com
Thu Feb 8 01:21:52 EST 2007


  User: gavin   
  Date: 07/02/08 01:21:52

  Added:       src/main/org/jboss/seam/captcha    Captcha.java
                        CaptchaResponse.java CaptchaResponseValidator.java
  Log:
  built-in JCaptcha integration
  
  Revision  Changes    Path
  1.1      date: 2007/02/08 06:21:52;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/captcha/Captcha.java
  
  Index: Captcha.java
  ===================================================================
  package org.jboss.seam.captcha;
  
  import java.io.Serializable;
  import java.rmi.server.UID;
  
  import org.jboss.seam.Component;
  import org.jboss.seam.ScopeType;
  import org.jboss.seam.annotations.Create;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.contexts.Contexts;
  import org.jboss.seam.security.CaptchaService;
  
  @Name("captcha")
  @Scope(ScopeType.PAGE)
  public class Captcha implements Serializable
  {
     private String id;
     private transient String response;
     
     @Create
     public void init()
     {
        id =  new UID().toString().replace(":", "-");
     }
     
     boolean validateResponse(String response)
     {
        boolean valid = CaptchaService.instance().getService().validateResponseForID(id, response);
        if (!valid) 
        {
           init();
        }
        return valid;
     }
  
     @CaptchaResponse
     public String getResponse()
     {
        return response;
     }
  
     public void setResponse(String input)
     {
        this.response = input;
     }
     
     public static Captcha instance()
     {
        if ( !Contexts.isPageContextActive() )
        {
           throw new IllegalStateException("No page context active");
        }
        return (Captcha) Component.getInstance(Captcha.class, ScopeType.PAGE);
     }
  
     public String getId()
     {
        return id;
     }
  
  }
  
  
  
  1.1      date: 2007/02/08 06:21:52;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/captcha/CaptchaResponse.java
  
  Index: CaptchaResponse.java
  ===================================================================
  package org.jboss.seam.captcha;
  
  import java.lang.annotation.Documented;
  import java.lang.annotation.ElementType;
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.lang.annotation.Target;
  
  import org.hibernate.validator.ValidatorClass;
  
  @Retention(RetentionPolicy.RUNTIME)
  @Documented
  @Target(ElementType.METHOD)
  @ValidatorClass(CaptchaResponseValidator.class)
  public @interface CaptchaResponse {
     String message() default "input characters did not match";
  }
  
  
  
  1.1      date: 2007/02/08 06:21:52;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/captcha/CaptchaResponseValidator.java
  
  Index: CaptchaResponseValidator.java
  ===================================================================
  package org.jboss.seam.captcha;
  
  import java.lang.annotation.Annotation;
  
  import org.hibernate.validator.Validator;
  
  public class CaptchaResponseValidator implements Validator
  {
  
     public void initialize(Annotation captchaResponse) {}
  
     public boolean isValid(Object response)
     {
        return Captcha.instance().validateResponse( (String) response );
     }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list