andreschaffer/event-sourcing-cqrs-examples

View on GitHub
src/main/java/bankservice/domain/model/client/Email.java

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package bankservice.domain.model.client;

import static com.google.common.base.Preconditions.checkArgument;

import bankservice.domain.model.Specification;
import bankservice.domain.model.ValueObject;
import org.apache.commons.validator.routines.EmailValidator;

public class Email extends ValueObject {

  private final String value;

  public Email(String value) {
    checkArgument(new EmailSpecification().isSatisfiedBy(value));
    this.value = value;
  }

  public String getValue() {
    return value;
  }

  public static class EmailSpecification implements Specification<String> {

    @Override
    public boolean isSatisfiedBy(String value) {
      return EmailValidator.getInstance().isValid(value);
    }
  }
}