in sources/src/main/java/com/google/solutions/jitaccess/apis/OrganizationId.java [34:109]
public record OrganizationId(
@NotNull String id
) implements Comparable<OrganizationId>, ResourceId {
static final String PREFIX = "organizations/";
public OrganizationId {
Preconditions.checkNotNull(id, "id");
assert !id.startsWith("//");
assert !id.contains("/");
}
@Override
public String toString() {
return this.id;
}
/**
* Parse an organization ID from one of the formats
* <p>
* * organizations/123
* * 123
*
* @return empty if the input string is malformed.
*/
public static @NotNull Optional<OrganizationId> parse(@Nullable String s) {
if (s == null) {
return Optional.empty();
}
s = s.trim();
if (s.startsWith(PREFIX) &&
s.indexOf('/', PREFIX.length()) == -1 &&
s.length() > PREFIX.length()) {
//
// String has organizations/ prefix, strip.
//
s = s.substring(PREFIX.length());
}
if (!s.isEmpty() && s.indexOf('/') == -1 && s.chars().allMatch(Character::isDigit)) {
return Optional.of(new OrganizationId(s));
}
else {
return Optional.empty();
}
}
// -------------------------------------------------------------------------
// Comparable.
// -------------------------------------------------------------------------
@Override
public int compareTo(@NotNull OrganizationId o) {
return this.id.compareTo(o.id);
}
// -------------------------------------------------------------------------
// ResourceId.
// -------------------------------------------------------------------------
@Override
public @NotNull String service() {
return ResourceManagerClient.SERVICE;
}
@Override
public @NotNull String type() {
return "organization";
}
@Override
public @NotNull String path() {
return PREFIX + this.id;
}
}