@Override
public Token exchangeForToken(String code, long expire)
throws IllegalArgumentException {
// TODO handle exp tokens
AuthenticatedUser user = codeStore.remove(code);
// if( expire > 0 ) user.setExpire(expire);
if (user == null)
throw new IllegalArgumentException("Code not valid");
Token t = generateToken(user, expire);
user.clearCode(); // TODO could also match if the user code matches
// codestore
return t;
}