ImagePlatform Class — spring-boot Architecture
Architecture documentation for the ImagePlatform class in ImagePlatform.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
buildpack/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/ImagePlatform.java lines 35–124
public class ImagePlatform {
private final String os;
private final @Nullable String architecture;
private final @Nullable String variant;
ImagePlatform(String os, @Nullable String architecture, @Nullable String variant) {
Assert.hasText(os, "'os' must not be empty");
this.os = os;
this.architecture = architecture;
this.variant = variant;
}
@Override
public boolean equals(@Nullable Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
ImagePlatform other = (ImagePlatform) obj;
return Objects.equals(this.architecture, other.architecture) && Objects.equals(this.os, other.os)
&& Objects.equals(this.variant, other.variant);
}
@Override
public int hashCode() {
return Objects.hash(this.architecture, this.os, this.variant);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder(this.os);
if (this.architecture != null) {
builder.append("/").append(this.architecture);
}
if (this.variant != null) {
builder.append("/").append(this.variant);
}
return builder.toString();
}
/**
* Create a new {@link ImagePlatform} from the given value in the form
* {@code os[/architecture[/variant]]}.
* @param value the value to parse
* @return an {@link ImagePlatform} instance
*/
public static ImagePlatform of(String value) {
Assert.hasText(value, "'value' must not be empty");
String[] split = value.split("/+");
return switch (split.length) {
case 1 -> new ImagePlatform(split[0], null, null);
case 2 -> new ImagePlatform(split[0], split[1], null);
case 3 -> new ImagePlatform(split[0], split[1], split[2]);
default -> throw new IllegalArgumentException(
"'value' [" + value + "] must be in the form 'os[/architecture[/variant]]'");
};
}
/**
* Create a new {@link ImagePlatform} matching the platform information from the
* provided {@link Image}.
* @param image the image to get platform information from
* @return an {@link ImagePlatform} instance
*/
public static ImagePlatform from(Image image) {
return new ImagePlatform(image.getOs(), image.getArchitecture(), image.getVariant());
}
/**
* Return a JSON-encoded representation of this platform.
* @return the JSON string
*/
public String toJson() {
ObjectNode json = SharedJsonMapper.get().createObjectNode();
json.put("os", this.os);
if (StringUtils.hasText(this.architecture)) {
json.put("architecture", this.architecture);
}
if (StringUtils.hasText(this.variant)) {
json.put("variant", this.variant);
}
return json.toString();
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free