@Value.Immutable
@ImmutablesStyle
interface Agent {
String DEFAULT_VERSION = "0.0.0";
String name();
String version();
@Value.Check
default void check() {
checkArgument(UserAgents.isValidName(name()), "Illegal agent name format: %s", name());
checkArgument(UserAgents.isValidVersion(version()), "Illegal version format: %s. This is a bug", version());
}
static Agent of(String name, String version) {
return ImmutableAgent.builder()
.name(name)
.version(UserAgents.isValidVersion(version) ? version : DEFAULT_VERSION)
.build();
}
}
}