package com.kryptnostic.directory.v1.model; import java.math.BigInteger; import java.security.SecureRandom; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; public final class ReservationToken { private static final SecureRandom random = new SecureRandom(); private static final Integer N_SECURE_BITS = 130; private static final Integer ENCODING = 32; private final String value; @JsonCreator private ReservationToken( String value ) { this.value = value; } @JsonValue public String getValue() { return value; } public static ReservationToken getSecureToken() { return new ReservationToken( new BigInteger( N_SECURE_BITS, random ).toString( ENCODING ) ); } public static ReservationToken fromValue( final String value ) { return new ReservationToken( value ); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ( ( value == null ) ? 0 : value.hashCode() ); return result; } @Override public boolean equals( Object obj ) { if ( this == obj ) return true; if ( obj == null ) return false; if ( getClass() != obj.getClass() ) return false; ReservationToken other = (ReservationToken) obj; if ( value == null ) { if ( other.value != null ) return false; } else if ( !value.equals( other.value ) ) return false; return true; } }