org.apache.wicket.validation.validator
Class CreditCardValidator

java.lang.Object
  extended by org.apache.wicket.behavior.Behavior
      extended by org.apache.wicket.validation.validator.AbstractValidator<java.lang.String>
          extended by org.apache.wicket.validation.validator.CreditCardValidator
All Implemented Interfaces:
java.io.Serializable, IClusterable, IComponentAwareEventSink, IComponentAwareHeaderContributor, INullAcceptingValidator<java.lang.String>, IValidator<java.lang.String>

public class CreditCardValidator
extends AbstractValidator<java.lang.String>

Checks if a credit card number is valid. The number will be checked for "American Express", "China UnionPay", "Diners Club Carte Blanche", "Diners Club International", "Diners Club US & Canada", "Discover Card", "JCB", "Laser", "Maestro", "MasterCard", "Solo", "Switch", "Visa" and "Visa Electron". If none of those apply to the credit card number, the credit card number is considered invalid.

Card prefixes and lengths have been taken from Wikipedia.

Since:
1.2.6
Author:
Johan Compagner, Joachim F. Rohde
See Also:
Serialized Form

Nested Class Summary
static class CreditCardValidator.CreditCard
           
 
Constructor Summary
CreditCardValidator()
          Construct.
CreditCardValidator(boolean failOnUnkown)
          Construct.
 
Method Summary
 CreditCardValidator.CreditCard determineCardId(java.lang.String creditCardNumber)
          Checks if the credit card number can be determined as a valid number.
 CreditCardValidator.CreditCard getCardId()
           
protected  boolean isChecksumCorrect(java.lang.String creditCardNumber)
          Calculates the checksum of a credit card number using the Luhn algorithm (the so-called "mod 10" algorithm).
protected  boolean isLengthAndPrefixCorrect(java.lang.String creditCardNumber)
          Checks if the credit card number can be determined as a valid number.
protected  CreditCardValidator.CreditCard isUnknown(java.lang.String creditCardNumber)
          Can be used (subclassed) to extend the test with a credit card not yet known by the validator.
protected  void onValidate(IValidatable<java.lang.String> validatable)
          Validates the IValidatable instance.
protected  void setCardId(CreditCardValidator.CreditCard cardId)
          Allow subclasses to set the card id
 
Methods inherited from class org.apache.wicket.validation.validator.AbstractValidator
error, error, error, error, resourceKey, validate, validateOnNullValue, variablesMap
 
Methods inherited from class org.apache.wicket.behavior.Behavior
afterRender, beforeRender, bind, canCallListenerInterface, detach, getStatelessHint, isEnabled, isTemporary, onComponentTag, onConfigure, onEvent, onException, renderHead, unbind
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CreditCardValidator

public CreditCardValidator()
Construct.


CreditCardValidator

public CreditCardValidator(boolean failOnUnkown)
Construct.

Parameters:
failOnUnkown -
Method Detail

getCardId

public final CreditCardValidator.CreditCard getCardId()
Returns:
Credit card issuer

setCardId

protected void setCardId(CreditCardValidator.CreditCard cardId)
Allow subclasses to set the card id

Parameters:
cardId -

onValidate

protected void onValidate(IValidatable<java.lang.String> validatable)
Validates the IValidatable instance.

Specified by:
onValidate in class AbstractValidator<java.lang.String>
Parameters:
validatable - the given IValidatable instance

isLengthAndPrefixCorrect

protected boolean isLengthAndPrefixCorrect(java.lang.String creditCardNumber)
Checks if the credit card number can be determined as a valid number.

Parameters:
creditCardNumber - the credit card number as a string
Returns:
TRUE if the credit card number could be determined as a valid number, else FALSE is returned

determineCardId

public final CreditCardValidator.CreditCard determineCardId(java.lang.String creditCardNumber)
Checks if the credit card number can be determined as a valid number.

Parameters:
creditCardNumber - the credit card number as a string
Returns:
TRUE if the credit card number could be determined as a valid number, else FALSE is returned

isUnknown

protected CreditCardValidator.CreditCard isUnknown(java.lang.String creditCardNumber)
Can be used (subclassed) to extend the test with a credit card not yet known by the validator.

Parameters:
creditCardNumber - the credit card number as a string
Returns:
The credit card id of the issuer

isChecksumCorrect

protected final boolean isChecksumCorrect(java.lang.String creditCardNumber)
Calculates the checksum of a credit card number using the Luhn algorithm (the so-called "mod 10" algorithm).

Parameters:
creditCardNumber - the credit card number for which the checksum should be calculated
Returns:
TRUE if the checksum for the given credit card number is valid, else return FALSE
See Also:
Wikipedie - Luhn algorithm


Copyright © 2006-2011 Apache Software Foundation. All Rights Reserved.