@@ -0,0 +1,1782 @@
+package com.ft.membership.common.types.userid;%0A%0Aimport com.fasterxml.jackson.annotation.JsonCreator;%0Aimport com.fasterxml.jackson.annotation.JsonValue;%0A%0Aimport java.util.Objects;%0Aimport java.util.UUID;%0A%0Aimport static com.google.common.base.Preconditions.checkNotNull;%0A%0A/**%0A * An immutable value type representing the globally unique identity (GUID) for FT Users.%0A *%0A * Essentially wraps a UUID value to provide a more fluent domain model.%0A */%0Apublic final class UserId %7B%0A%0A    private final UUID id;%0A%0A    /**%0A     * Static factory method for user identities%0A     * @param id A UUID to be used as the basis for unique user identity.%0A     * @throws NullPointerException Thrown when the supplied id is null%0A     */%0A    public static UserId userId(UUID id) %7B%0A        return new UserId(id);%0A    %7D%0A%0A    /**%0A     * Static factory method for generating a random user identity%0A     */%0A    public static UserId randomUserId() %7B%0A        return userId(UUID.randomUUID());%0A    %7D%0A%0A    /**%0A     * @param id A UUID to be used as the basis for unique user identity.%0A     * @throws NullPointerException Thrown when the supplied id is null%0A     */%0A    @JsonCreator%0A    public UserId(UUID id) %7B%0A        this.id = checkNotNull(id, %22Cannot create a UserId with null UUID value%22);%0A    %7D%0A%0A    @JsonValue%0A    public UUID asUUID() %7B%0A        return id;%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        return id.toString();%0A    %7D%0A%0A    @Override%0A    public boolean equals(Object obj) %7B%0A        if (obj == null) %7B%0A            return false;%0A        %7D%0A        if (getClass() != obj.getClass()) %7B%0A            return false;%0A        %7D%0A        UserId that = (UserId) obj;%0A        return Objects.equals(this.id, that.id);%0A    %7D%0A%0A    @Override%0A    public int hashCode() %7B%0A        return id.hashCode();%0A    %7D%0A%7D

Add UserId common type definition