From 1e7449a839bb86f41620c069283ce9287f085cb0 Mon Sep 17 00:00:00 2001 From: Egg-03 <111327101+eggy03@users.noreply.github.com> Date: Mon, 20 Apr 2026 20:53:07 +0530 Subject: [PATCH 1/5] refactor(dmidecode): remove replacement note - Couldn't find if --json flag could actually make it to release in dmidecode Signed-off-by: Egg-03 <111327101+eggy03@users.noreply.github.com> --- .../io/github/eggy03/dmidecode/mapper/CommonDMIMapper.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/eggy03/dmidecode/mapper/CommonDMIMapper.java b/src/main/java/io/github/eggy03/dmidecode/mapper/CommonDMIMapper.java index 94e0b2e..b6ddd9c 100644 --- a/src/main/java/io/github/eggy03/dmidecode/mapper/CommonDMIMapper.java +++ b/src/main/java/io/github/eggy03/dmidecode/mapper/CommonDMIMapper.java @@ -89,8 +89,7 @@ public interface CommonDMIMapper { @FragileMethod( type = MethodType.INTERFACE_DEFAULT_METHOD, reason = "Parsing formatted human readable dmidecode output is always error-prone and subject to change without notice", - requiresReplacement = true, - replacementNote = "Consider using --json flag of dmidecode if available" + requiresReplacement = true ) default @NonNull Optional mapToEntity(@Nullable String rawDMIData, @NonNull Class mappableEntityClass) { @@ -191,8 +190,7 @@ public interface CommonDMIMapper { @FragileMethod( type = MethodType.INTERFACE_DEFAULT_METHOD, reason = "Parsing formatted human readable dmidecode output is always error-prone and subject to change without notice", - requiresReplacement = true, - replacementNote = "Consider using --json flag of dmidecode if available" + requiresReplacement = true ) default @NonNull @Unmodifiable List mapToList(@Nullable String rawDMIData, @NonNull Class mappableEntityClass) { From 7af11a820f6065e444671b21011befd58326b53a Mon Sep 17 00:00:00 2001 From: Egg-03 <111327101+eggy03@users.noreply.github.com> Date: Mon, 20 Apr 2026 21:25:13 +0530 Subject: [PATCH 2/5] refactor: update style - Remove `@JsonSerialize` annotation as it will be applied individually on entity classes. - Modify `typeAbstract` style to remove the "Abstract" prefix, allowing for cleaner abstract class naming. - Update `typeImmutable` style to add an "Immutable" prefix to generated immutable types. - The current setup leaks the implementations to the public API by default. While mappers need concrete implementation during serialization and deserialization, the final reference must be held by the abstract class itself. - This update to style will allow the abstract classes to have names starting with DMI*, while serialization and deserialization will happen in the mapping layer, with the implemented classes, but they will retain the references of their abstract counterparts which will be returned. Signed-off-by: Egg-03 <111327101+eggy03@users.noreply.github.com> --- .../eggy03/dmidecode/annotation/ImmutableEntityStyle.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/eggy03/dmidecode/annotation/ImmutableEntityStyle.java b/src/main/java/io/github/eggy03/dmidecode/annotation/ImmutableEntityStyle.java index 8441871..6a8c882 100644 --- a/src/main/java/io/github/eggy03/dmidecode/annotation/ImmutableEntityStyle.java +++ b/src/main/java/io/github/eggy03/dmidecode/annotation/ImmutableEntityStyle.java @@ -1,7 +1,6 @@ package io.github.eggy03.dmidecode.annotation; import org.immutables.value.Value; -import tools.jackson.databind.annotation.JsonSerialize; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -15,17 +14,15 @@ *

*

* It modifies the naming and structural style of the generated immutable implementations via {@link Value.Style} - * and contains {@link JsonSerialize} for automatic Jackson integration. *

* * @since 0.2.0 */ @Target({ElementType.PACKAGE, ElementType.TYPE}) @Retention(RetentionPolicy.CLASS) // Make it class retention for incremental compilation -@JsonSerialize // Jackson automatic integration @Value.Style( - typeAbstract = {"Abstract*"}, // 'Abstract' prefix will be detected and trimmed - typeImmutable = "*", // No prefix or suffix for generated immutable type + typeAbstract = {"*"}, // No prefixes or suffixes will be detected and trimmed + typeImmutable = "Immutable*", // Generated immutable type will have Immutable prefix added visibility = Value.Style.ImplementationVisibility.PUBLIC, // Generated class will be always public builder = "new", // construct builder using 'new' instead of factory method (required for Jackson). // Generated builders will have attributes annotated with @JsonProperty so deserialization will work properly. From 3b0dec149f2dbb671a72e680f0d202396bd2c441 Mon Sep 17 00:00:00 2001 From: Egg-03 <111327101+eggy03@users.noreply.github.com> Date: Tue, 21 Apr 2026 08:57:02 +0530 Subject: [PATCH 3/5] refactor(entity): rename abstract DMI entity classes and add JSON annotations - Rename abstract DMI entity classes to their concrete counterparts (e.g., `AbstractDMIProcessor` to `DMIProcessor`). - Add manual `@JsonSerialize` and `@JsonDeserialize` annotations to the renamed classes to specify the immutable implementation for Jackson serialization/deserialization. - Remove example builder code blocks from Javadoc comments as they are no longer relevant to abstract classes. Signed-off-by: Egg-03 <111327101+eggy03@users.noreply.github.com> --- .../{AbstractDMIBIOS.java => DMIBIOS.java} | 19 +++++----------- ...BIOSLanguage.java => DMIBIOSLanguage.java} | 18 +++++---------- ...actDMIBaseboard.java => DMIBaseboard.java} | 20 +++++------------ ...bstractDMIChassis.java => DMIChassis.java} | 19 +++++----------- ....java => DMIPortConnectorInformation.java} | 19 +++++----------- ...MISystemSlots.java => DMISystemSlots.java} | 20 +++++------------ ...MemoryDevice.java => DMIMemoryDevice.java} | 21 +++++------------- ...Array.java => DMIPhysicalMemoryArray.java} | 20 +++++------------ ...leBattery.java => DMIPortableBattery.java} | 20 +++++------------ .../{AbstractDMICache.java => DMICache.java} | 20 +++++------------ ...actDMIProcessor.java => DMIProcessor.java} | 22 +++++-------------- ...{AbstractDMISystem.java => DMISystem.java} | 20 +++++------------ 12 files changed, 60 insertions(+), 178 deletions(-) rename src/main/java/io/github/eggy03/dmidecode/entity/board/{AbstractDMIBIOS.java => DMIBIOS.java} (84%) rename src/main/java/io/github/eggy03/dmidecode/entity/board/{AbstractDMIBIOSLanguage.java => DMIBIOSLanguage.java} (77%) rename src/main/java/io/github/eggy03/dmidecode/entity/board/{AbstractDMIBaseboard.java => DMIBaseboard.java} (82%) rename src/main/java/io/github/eggy03/dmidecode/entity/board/{AbstractDMIChassis.java => DMIChassis.java} (86%) rename src/main/java/io/github/eggy03/dmidecode/entity/board/{AbstractDMIPortConnectorInformation.java => DMIPortConnectorInformation.java} (78%) rename src/main/java/io/github/eggy03/dmidecode/entity/board/{AbstractDMISystemSlots.java => DMISystemSlots.java} (80%) rename src/main/java/io/github/eggy03/dmidecode/entity/memory/{AbstractDMIMemoryDevice.java => DMIMemoryDevice.java} (90%) rename src/main/java/io/github/eggy03/dmidecode/entity/memory/{AbstractDMIPhysicalMemoryArray.java => DMIPhysicalMemoryArray.java} (77%) rename src/main/java/io/github/eggy03/dmidecode/entity/peripheral/{AbstractDMIPortableBattery.java => DMIPortableBattery.java} (82%) rename src/main/java/io/github/eggy03/dmidecode/entity/processor/{AbstractDMICache.java => DMICache.java} (84%) rename src/main/java/io/github/eggy03/dmidecode/entity/processor/{AbstractDMIProcessor.java => DMIProcessor.java} (87%) rename src/main/java/io/github/eggy03/dmidecode/entity/system/{AbstractDMISystem.java => DMISystem.java} (80%) diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIBIOS.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOS.java similarity index 84% rename from src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIBIOS.java rename to src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOS.java index 62de8f7..18f80fb 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIBIOS.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOS.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import java.util.List; @@ -24,25 +26,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMIBIOS bios = new DMIBIOS.Builder()
- *     .vendor("American Megatrends Inc.")
- *     .version("F10")
- *     .releaseDate("07/15/2023")
- *     .build();
- *
- * // Create a modified copy
- * DMIBIOS updated = bios
- *     .withVersion("F11");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMIBIOS { +@JsonSerialize(as = ImmutableDMIBIOS.class) +@JsonDeserialize(as = ImmutableDMIBIOS.class) +public abstract class DMIBIOS { @JsonProperty("Vendor") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIBIOSLanguage.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOSLanguage.java similarity index 77% rename from src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIBIOSLanguage.java rename to src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOSLanguage.java index ba3cdb1..865f2f5 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIBIOSLanguage.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOSLanguage.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import java.util.List; @@ -24,24 +26,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMIBIOSLanguage language = new DMIBIOSLanguage.Builder()
- *     .installableLanguages(List.of("en|US", "fr|FR"))
- *     .currentLanguage("en|US")
- *     .build();
- *
- * // Create a modified copy
- * DMIBIOSLanguage updated = language
- *     .withCurrentLanguage("fr|FR");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMIBIOSLanguage { +@JsonSerialize(as = ImmutableDMIBIOSLanguage.class) +@JsonDeserialize(as = ImmutableDMIBIOSLanguage.class) +public abstract class DMIBIOSLanguage { @JsonProperty("Installable Languages") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIBaseboard.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBaseboard.java similarity index 82% rename from src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIBaseboard.java rename to src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBaseboard.java index 72adbed..4375cfa 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIBaseboard.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBaseboard.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import java.util.List; @@ -24,26 +26,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMIBaseboard board = new DMIBaseboard.Builder()
- *     .manufacturer("ASUSTeK COMPUTER INC.")
- *     .productName("PRIME B550M-A")
- *     .serialNumber("ABC123456")
- *     .build();
- *
- * // Create a modified copy
- * DMIBaseboard updated = board
- *     .withSerialNumber("XYZ987654")
- *     .withProductName("PRIME A320");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMIBaseboard { +@JsonSerialize(as = ImmutableDMIBaseboard.class) +@JsonDeserialize(as = ImmutableDMIBaseboard.class) +public abstract class DMIBaseboard { @JsonProperty("Manufacturer") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIChassis.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIChassis.java similarity index 86% rename from src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIChassis.java rename to src/main/java/io/github/eggy03/dmidecode/entity/board/DMIChassis.java index a36fce1..e068214 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIChassis.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIChassis.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; /** * Immutable representation of system chassis information retrieved via DMI. @@ -22,25 +24,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMIChassis chassis = new DMIChassis.Builder()
- *     .manufacturer("Dell Inc.")
- *     .type("Desktop")
- *     .serialNumber("ABC123456")
- *     .build();
- *
- * // Create a modified copy
- * DMIChassis updated = chassis
- *     .withAssetTag("OFFICE-PC-01");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMIChassis { +@JsonSerialize(as = ImmutableDMIChassis.class) +@JsonDeserialize(as = ImmutableDMIChassis.class) +public abstract class DMIChassis { @JsonProperty("Manufacturer") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIPortConnectorInformation.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIPortConnectorInformation.java similarity index 78% rename from src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIPortConnectorInformation.java rename to src/main/java/io/github/eggy03/dmidecode/entity/board/DMIPortConnectorInformation.java index cfeaa3e..5736918 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMIPortConnectorInformation.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIPortConnectorInformation.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; /** * Immutable representation of port connector information retrieved via DMI. @@ -22,25 +24,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMIPortConnectorInformation port = new DMIPortConnectorInformation.Builder()
- *     .externalReferenceDesignator("USB1")
- *     .externalConnectorType("USB")
- *     .portType("USB")
- *     .build();
- *
- * // Create a modified copy
- * DMIPortConnectorInformation updated = port
- *     .withPortType("USB Type-C");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMIPortConnectorInformation { +@JsonSerialize(as = ImmutableDMIPortConnectorInformation.class) +@JsonDeserialize(as = ImmutableDMIPortConnectorInformation.class) +public abstract class DMIPortConnectorInformation { @JsonProperty("External Reference Designator") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMISystemSlots.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMISystemSlots.java similarity index 80% rename from src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMISystemSlots.java rename to src/main/java/io/github/eggy03/dmidecode/entity/board/DMISystemSlots.java index 956f169..6aa64c1 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/AbstractDMISystemSlots.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMISystemSlots.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import java.util.List; @@ -24,26 +26,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMISystemSlots slot = new DMISystemSlots.Builder()
- *     .designation("PCIEX16")
- *     .type("PCI Express")
- *     .currentUsage("In Use")
- *     .busAddress("0000:01:00.0")
- *     .build();
- *
- * // Create a modified copy
- * DMISystemSlots updated = slot
- *     .withCurrentUsage("Available");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMISystemSlots { +@JsonSerialize(as = ImmutableDMISystemSlots.class) +@JsonDeserialize(as = ImmutableDMISystemSlots.class) +public abstract class DMISystemSlots { @JsonProperty("Designation") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/memory/AbstractDMIMemoryDevice.java b/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIMemoryDevice.java similarity index 90% rename from src/main/java/io/github/eggy03/dmidecode/entity/memory/AbstractDMIMemoryDevice.java rename to src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIMemoryDevice.java index b448655..0d34634 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/memory/AbstractDMIMemoryDevice.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIMemoryDevice.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; /** * Immutable representation of memory device information retrieved via DMI. @@ -22,27 +24,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMIMemoryDevice memory = new DMIMemoryDevice.Builder()
- *     .locator("DIMM_A1")
- *     .size("16 GB")
- *     .type("DDR4")
- *     .speed("3200 MT/s")
- *     .manufacturer("Samsung")
- *     .build();
- *
- * // Create a modified copy
- * DMIMemoryDevice updated = memory
- *     .withConfiguredMemorySpeed("2933 MT/s");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMIMemoryDevice { +@JsonSerialize(as = ImmutableDMIMemoryDevice.class) +@JsonDeserialize(as = ImmutableDMIMemoryDevice.class) +public abstract class DMIMemoryDevice { @JsonProperty("Array Handle") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/memory/AbstractDMIPhysicalMemoryArray.java b/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIPhysicalMemoryArray.java similarity index 77% rename from src/main/java/io/github/eggy03/dmidecode/entity/memory/AbstractDMIPhysicalMemoryArray.java rename to src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIPhysicalMemoryArray.java index a6b2204..65a44fa 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/memory/AbstractDMIPhysicalMemoryArray.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIPhysicalMemoryArray.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; /** * Immutable representation of physical memory array information retrieved via DMI. @@ -22,26 +24,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMIPhysicalMemoryArray array = new DMIPhysicalMemoryArray.Builder()
- *     .location("System Board Or Motherboard")
- *     .use("System Memory")
- *     .maximumCapacity("128 GB")
- *     .numberOfDevices(4)
- *     .build();
- *
- * // Create a modified copy
- * DMIPhysicalMemoryArray updated = array
- *     .withErrorCorrectionType("Multi-bit ECC");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMIPhysicalMemoryArray { +@JsonSerialize(as = ImmutableDMIPhysicalMemoryArray.class) +@JsonDeserialize(as = ImmutableDMIPhysicalMemoryArray.class) +public abstract class DMIPhysicalMemoryArray { @JsonProperty("Location") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/peripheral/AbstractDMIPortableBattery.java b/src/main/java/io/github/eggy03/dmidecode/entity/peripheral/DMIPortableBattery.java similarity index 82% rename from src/main/java/io/github/eggy03/dmidecode/entity/peripheral/AbstractDMIPortableBattery.java rename to src/main/java/io/github/eggy03/dmidecode/entity/peripheral/DMIPortableBattery.java index 1bca010..5682403 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/peripheral/AbstractDMIPortableBattery.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/peripheral/DMIPortableBattery.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; /** * Immutable representation of portable battery information retrieved via DMI. @@ -22,26 +24,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMIPortableBattery battery = new DMIPortableBattery.Builder()
- *     .location("Internal Battery")
- *     .manufacturer("LG")
- *     .designCapacity("50000 mWh")
- *     .designVoltage("11.4 V")
- *     .build();
- *
- * // Create a modified copy
- * DMIPortableBattery updated = battery
- *     .withMaximumError("2%");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMIPortableBattery { +@JsonSerialize(as = ImmutableDMIPortableBattery.class) +@JsonDeserialize(as = ImmutableDMIPortableBattery.class) +public abstract class DMIPortableBattery { @JsonProperty("Location") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/processor/AbstractDMICache.java b/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMICache.java similarity index 84% rename from src/main/java/io/github/eggy03/dmidecode/entity/processor/AbstractDMICache.java rename to src/main/java/io/github/eggy03/dmidecode/entity/processor/DMICache.java index c50f1f5..eae750c 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/processor/AbstractDMICache.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMICache.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import java.util.List; @@ -24,26 +26,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMICache cache = new DMICache.Builder()
- *     .socketDesignation("L3-Cache")
- *     .location("Internal")
- *     .installedSize("32 MB")
- *     .associativity("16-way Set-Associative")
- *     .build();
- *
- * // Create a modified copy
- * DMICache updated = cache
- *     .withInstalledSize("64 MB");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMICache { +@JsonSerialize(as = ImmutableDMICache.class) +@JsonDeserialize(as = ImmutableDMICache.class) +public abstract class DMICache { @JsonProperty("Socket Designation") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/processor/AbstractDMIProcessor.java b/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMIProcessor.java similarity index 87% rename from src/main/java/io/github/eggy03/dmidecode/entity/processor/AbstractDMIProcessor.java rename to src/main/java/io/github/eggy03/dmidecode/entity/processor/DMIProcessor.java index c5e3ee6..6621d6e 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/processor/AbstractDMIProcessor.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMIProcessor.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import java.util.List; @@ -24,28 +26,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMIProcessor processor = new DMIProcessor.Builder()
- *     .socketDesignation("CPU0")
- *     .manufacturer("Intel")
- *     .version("Intel(R) Core(TM) i7-12700H")
- *     .coreCount(14)
- *     .threadCount(20)
- *     .currentSpeed("2700 MHz")
- *     .build();
- *
- * // Create a modified copy
- * DMIProcessor updated = processor
- *     .withCurrentSpeed("3900 MHz");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMIProcessor { +@JsonSerialize(as = ImmutableDMIProcessor.class) +@JsonDeserialize(as = ImmutableDMIProcessor.class) +public abstract class DMIProcessor { @JsonProperty("Socket Designation") @Nullable diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/system/AbstractDMISystem.java b/src/main/java/io/github/eggy03/dmidecode/entity/system/DMISystem.java similarity index 80% rename from src/main/java/io/github/eggy03/dmidecode/entity/system/AbstractDMISystem.java rename to src/main/java/io/github/eggy03/dmidecode/entity/system/DMISystem.java index 91081e8..50428cc 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/system/AbstractDMISystem.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/system/DMISystem.java @@ -11,6 +11,8 @@ import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; /** * Immutable representation of system information retrieved via DMI. @@ -22,26 +24,14 @@ * Instances of this class are thread-safe. *

* - *

Usage example

- *
{@code
- * DMISystem system = new DMISystem.Builder()
- *     .manufacturer("LENOVO")
- *     .productName("ThinkPad T14 Gen 3")
- *     .serialNumber("PF123ABC")
- *     .uuid("4C4C4544-0038-4D10-8051-CAC04F4A1234")
- *     .build();
- *
- * // Create a modified copy
- * DMISystem updated = system
- *     .withSkuNumber("21CFCTO1WW");
- * }
- * * @since 0.2.0 */ @Value.Immutable @ImmutableEntityStyle @NullMarked -public abstract class AbstractDMISystem { +@JsonSerialize(as = ImmutableDMISystem.class) +@JsonDeserialize(as = ImmutableDMISystem.class) +public abstract class DMISystem { @JsonProperty("Manufacturer") @Nullable From e2859687db584055c5a7b67286ba61e79fabcd3f Mon Sep 17 00:00:00 2001 From: Egg-03 <111327101+eggy03@users.noreply.github.com> Date: Tue, 21 Apr 2026 09:03:07 +0530 Subject: [PATCH 4/5] test: update tests to use immutable builders - Replace usage of `Builder()` with `Immutable.Builder()` in various test classes. - This change aligns the tests with the use of immutable data structures for DMI entities. - Updated files include: - `DMIProcessorServiceTest.java` - `DMISystemServiceTest.java` - `DMIPortableBatteryServiceTest.java` - `DMICacheServiceTest.java` - `DMIBIOSServiceTest.java` - `DMIBaseboardServiceTest.java` - `DMIMemoryDeviceServiceTest.java` - `DMIPhysicalMemoryArrayServiceTest.java` - `DMISystemSlotsServiceTest.java` - `DMIChassisServiceTest.java` - `DMIPortConnectorInformationServiceTest.java` - `DMIBIOSLanguageServiceTest.java` Signed-off-by: Egg-03 <111327101+eggy03@users.noreply.github.com> --- .../dmidecode/service/board/DMIBIOSLanguageServiceTest.java | 5 +++-- .../eggy03/dmidecode/service/board/DMIBIOSServiceTest.java | 3 ++- .../dmidecode/service/board/DMIBaseboardServiceTest.java | 5 +++-- .../dmidecode/service/board/DMIChassisServiceTest.java | 5 +++-- .../board/DMIPortConnectorInformationServiceTest.java | 3 ++- .../dmidecode/service/board/DMISystemSlotsServiceTest.java | 3 ++- .../dmidecode/service/memory/DMIMemoryDeviceServiceTest.java | 3 ++- .../service/memory/DMIPhysicalMemoryArrayServiceTest.java | 5 +++-- .../service/peripheral/DMIPortableBatteryServiceTest.java | 3 ++- .../dmidecode/service/processor/DMICacheServiceTest.java | 3 ++- .../dmidecode/service/processor/DMIProcessorServiceTest.java | 3 ++- .../dmidecode/service/system/DMISystemServiceTest.java | 5 +++-- 12 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBIOSLanguageServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBIOSLanguageServiceTest.java index 04800d3..02d8f21 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBIOSLanguageServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBIOSLanguageServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.board; import io.github.eggy03.dmidecode.entity.board.DMIBIOSLanguage; +import io.github.eggy03.dmidecode.entity.board.ImmutableDMIBIOSLanguage; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -33,7 +34,7 @@ static void setup() { "\tCurrently Installed Language: en|US" ); - mockDMIClass = new DMIBIOSLanguage.Builder() + mockDMIClass = new ImmutableDMIBIOSLanguage.Builder() .installableLanguages(Arrays.asList( "en|US", "fr|FR", @@ -65,7 +66,7 @@ void test_get_fail_invalidRawDmi_emptyOutput() { .when(() -> TerminalUtility.executeCommand(anyString(), anyLong())) .thenReturn("invalid output"); - assertThat(service.get(15)).contains(new DMIBIOSLanguage.Builder().build()); + assertThat(service.get(15)).contains(new ImmutableDMIBIOSLanguage.Builder().build()); } } } diff --git a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBIOSServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBIOSServiceTest.java index 5ce052f..1b6371e 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBIOSServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBIOSServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.board; import io.github.eggy03.dmidecode.entity.board.DMIBIOS; +import io.github.eggy03.dmidecode.entity.board.ImmutableDMIBIOS; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -39,7 +40,7 @@ static void setup() { "\tFirmware Revision: 1.12" ); - mockDMIClass = new DMIBIOS.Builder() + mockDMIClass = new ImmutableDMIBIOS.Builder() .vendor("American Megatrends Inc.") .version("F10") .releaseDate("07/15/2023") diff --git a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBaseboardServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBaseboardServiceTest.java index 6a1e65d..2585f4f 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBaseboardServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIBaseboardServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.board; import io.github.eggy03.dmidecode.entity.board.DMIBaseboard; +import io.github.eggy03.dmidecode.entity.board.ImmutableDMIBaseboard; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -41,7 +42,7 @@ static void setup() { ); - mockDMIClass = new DMIBaseboard.Builder() + mockDMIClass = new ImmutableDMIBaseboard.Builder() .manufacturer("ASUSTeK COMPUTER INC.") .productName("PRIME B550M-A") .version("Rev X.0x") @@ -84,7 +85,7 @@ void test_get_fail_invalidRawDmi_emptyOutput() { .thenReturn("invalid output"); - assertThat(service.get(15)).contains(new DMIBaseboard.Builder().build()); + assertThat(service.get(15)).contains(new ImmutableDMIBaseboard.Builder().build()); } } diff --git a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIChassisServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIChassisServiceTest.java index 5ee9f49..f77cc20 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIChassisServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIChassisServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.board; import io.github.eggy03.dmidecode.entity.board.DMIChassis; +import io.github.eggy03.dmidecode.entity.board.ImmutableDMIChassis; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -41,7 +42,7 @@ static void setup() { "\tSKU Number: SKU-001" ); - mockDMIClass = new DMIChassis.Builder() + mockDMIClass = new ImmutableDMIChassis.Builder() .manufacturer("Dell Inc.") .type("Desktop") .lock("Not Present") @@ -82,7 +83,7 @@ void test_get_fail_invalidRawDmi_emptyOutput() { .when(() -> TerminalUtility.executeCommand(anyString(), anyLong())) .thenReturn("invalid output"); - assertThat(service.get(15)).contains(new DMIChassis.Builder().build()); + assertThat(service.get(15)).contains(new ImmutableDMIChassis.Builder().build()); } } } diff --git a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIPortConnectorInformationServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIPortConnectorInformationServiceTest.java index b6a63c6..e88bb8a 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/board/DMIPortConnectorInformationServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/board/DMIPortConnectorInformationServiceTest.java @@ -2,6 +2,7 @@ import io.github.eggy03.dmidecode.entity.board.DMIPortConnectorInformation; +import io.github.eggy03.dmidecode.entity.board.ImmutableDMIPortConnectorInformation; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -32,7 +33,7 @@ static void setup() { "\tPort Type: USB" ); - mockDMIClass = new DMIPortConnectorInformation.Builder() + mockDMIClass = new ImmutableDMIPortConnectorInformation.Builder() .externalReferenceDesignator("USB1") .internalReferenceDesignator("JUSB1") .externalConnectorType("USB") diff --git a/src/test/java/io/github/eggy03/dmidecode/service/board/DMISystemSlotsServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/board/DMISystemSlotsServiceTest.java index 4589623..d0905c5 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/board/DMISystemSlotsServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/board/DMISystemSlotsServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.board; import io.github.eggy03.dmidecode.entity.board.DMISystemSlots; +import io.github.eggy03.dmidecode.entity.board.ImmutableDMISystemSlots; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -37,7 +38,7 @@ static void setup() { "\tBus Address: 0000:01:00.0" ); - mockDMIClass = new DMISystemSlots.Builder() + mockDMIClass = new ImmutableDMISystemSlots.Builder() .designation("PCIEX16") .type("PCI Express") .currentUsage("In Use") diff --git a/src/test/java/io/github/eggy03/dmidecode/service/memory/DMIMemoryDeviceServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/memory/DMIMemoryDeviceServiceTest.java index e7183c4..1a533c9 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/memory/DMIMemoryDeviceServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/memory/DMIMemoryDeviceServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.memory; import io.github.eggy03.dmidecode.entity.memory.DMIMemoryDevice; +import io.github.eggy03.dmidecode.entity.memory.ImmutableDMIMemoryDevice; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -47,7 +48,7 @@ static void setup() { "\tConfigured Voltage: 1.2 V" ); - mockDMIClass = new DMIMemoryDevice.Builder() + mockDMIClass = new ImmutableDMIMemoryDevice.Builder() .arrayHandle("0x002C") .errorInformationHandle("0x002D") .totalWidth("64 bits") diff --git a/src/test/java/io/github/eggy03/dmidecode/service/memory/DMIPhysicalMemoryArrayServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/memory/DMIPhysicalMemoryArrayServiceTest.java index 586dc89..9ff8f68 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/memory/DMIPhysicalMemoryArrayServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/memory/DMIPhysicalMemoryArrayServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.memory; import io.github.eggy03.dmidecode.entity.memory.DMIPhysicalMemoryArray; +import io.github.eggy03.dmidecode.entity.memory.ImmutableDMIPhysicalMemoryArray; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -32,7 +33,7 @@ static void setup() { "\tNumber Of Devices: 4" ); - mockDMIClass = new DMIPhysicalMemoryArray.Builder() + mockDMIClass = new ImmutableDMIPhysicalMemoryArray.Builder() .location("System Board Or Motherboard") .use("System Memory") .errorCorrectionType("Multi-bit ECC") @@ -65,7 +66,7 @@ void test_get_fail_invalidRawDmi_emptyOutput() { .thenReturn("invalid output"); assertThat(service.get(15)) - .contains(new DMIPhysicalMemoryArray.Builder().build()); + .contains(new ImmutableDMIPhysicalMemoryArray.Builder().build()); } } } diff --git a/src/test/java/io/github/eggy03/dmidecode/service/peripheral/DMIPortableBatteryServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/peripheral/DMIPortableBatteryServiceTest.java index 896ddb8..a1e6a83 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/peripheral/DMIPortableBatteryServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/peripheral/DMIPortableBatteryServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.peripheral; import io.github.eggy03.dmidecode.entity.peripheral.DMIPortableBattery; +import io.github.eggy03.dmidecode.entity.peripheral.ImmutableDMIPortableBattery; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -37,7 +38,7 @@ static void setup() { "\tOEM-specific Information: None" ); - mockDMIClass = new DMIPortableBattery.Builder() + mockDMIClass = new ImmutableDMIPortableBattery.Builder() .location("Internal Battery") .manufacturer("LG") .name("BAT0") diff --git a/src/test/java/io/github/eggy03/dmidecode/service/processor/DMICacheServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/processor/DMICacheServiceTest.java index a134e51..7280a19 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/processor/DMICacheServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/processor/DMICacheServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.processor; import io.github.eggy03.dmidecode.entity.processor.DMICache; +import io.github.eggy03.dmidecode.entity.processor.ImmutableDMICache; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -42,7 +43,7 @@ static void setup() { "\tAssociativity: 16-way Set-Associative" ); - mockDMIClass = new DMICache.Builder() + mockDMIClass = new ImmutableDMICache.Builder() .socketDesignation("L3-Cache") .configuration("Enabled, Not Socketed, Level 3") .operationalMode("Write Back") diff --git a/src/test/java/io/github/eggy03/dmidecode/service/processor/DMIProcessorServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/processor/DMIProcessorServiceTest.java index 4489b11..aa588ec 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/processor/DMIProcessorServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/processor/DMIProcessorServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.processor; import io.github.eggy03.dmidecode.entity.processor.DMIProcessor; +import io.github.eggy03.dmidecode.entity.processor.ImmutableDMIProcessor; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -59,7 +60,7 @@ static void setup() { "\t\tHardware Thread" ); - mockDMIClass = new DMIProcessor.Builder() + mockDMIClass = new ImmutableDMIProcessor.Builder() .socketDesignation("CPU0") .type("Central Processor") .family("Core i7") diff --git a/src/test/java/io/github/eggy03/dmidecode/service/system/DMISystemServiceTest.java b/src/test/java/io/github/eggy03/dmidecode/service/system/DMISystemServiceTest.java index 1d8d602..84b0635 100644 --- a/src/test/java/io/github/eggy03/dmidecode/service/system/DMISystemServiceTest.java +++ b/src/test/java/io/github/eggy03/dmidecode/service/system/DMISystemServiceTest.java @@ -1,6 +1,7 @@ package io.github.eggy03.dmidecode.service.system; import io.github.eggy03.dmidecode.entity.system.DMISystem; +import io.github.eggy03.dmidecode.entity.system.ImmutableDMISystem; import io.github.eggy03.dmidecode.utility.TerminalUtility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -34,7 +35,7 @@ static void setup() { "\tFamily: ThinkPad" ); - mockDMIClass = new DMISystem.Builder() + mockDMIClass = new ImmutableDMISystem.Builder() .manufacturer("LENOVO") .productName("ThinkPad T14 Gen 3") .version("ThinkPad T14 Gen 3") @@ -68,7 +69,7 @@ void test_get_fail_invalidRawDmi_emptyOutput() { .when(() -> TerminalUtility.executeCommand(anyString(), anyLong())) .thenReturn("invalid output"); - assertThat(service.get(15)).contains(new DMISystem.Builder().build()); + assertThat(service.get(15)).contains(new ImmutableDMISystem.Builder().build()); } } } From 0f903233a17be34107eb8b414b2d6a4befbaed67 Mon Sep 17 00:00:00 2001 From: Egg-03 <111327101+eggy03@users.noreply.github.com> Date: Tue, 21 Apr 2026 09:34:10 +0530 Subject: [PATCH 5/5] refactor(entity): remove overriden toString() methods - toString() no more returns a pretty-printed JSON. The function has been delegated to `toJson()` instead Signed-off-by: Egg-03 <111327101+eggy03@users.noreply.github.com> --- .../java/io/github/eggy03/dmidecode/entity/board/DMIBIOS.java | 3 +-- .../github/eggy03/dmidecode/entity/board/DMIBIOSLanguage.java | 3 +-- .../io/github/eggy03/dmidecode/entity/board/DMIBaseboard.java | 3 +-- .../io/github/eggy03/dmidecode/entity/board/DMIChassis.java | 3 +-- .../dmidecode/entity/board/DMIPortConnectorInformation.java | 3 +-- .../github/eggy03/dmidecode/entity/board/DMISystemSlots.java | 3 +-- .../github/eggy03/dmidecode/entity/memory/DMIMemoryDevice.java | 3 +-- .../eggy03/dmidecode/entity/memory/DMIPhysicalMemoryArray.java | 3 +-- .../eggy03/dmidecode/entity/peripheral/DMIPortableBattery.java | 3 +-- .../io/github/eggy03/dmidecode/entity/processor/DMICache.java | 3 +-- .../github/eggy03/dmidecode/entity/processor/DMIProcessor.java | 3 +-- .../io/github/eggy03/dmidecode/entity/system/DMISystem.java | 3 +-- 12 files changed, 12 insertions(+), 24 deletions(-) diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOS.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOS.java index 18f80fb..59c6066 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOS.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOS.java @@ -71,8 +71,7 @@ public abstract class DMIBIOS { @Nullable public abstract String firmwareRevision(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOSLanguage.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOSLanguage.java index 865f2f5..d9b5e37 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOSLanguage.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBIOSLanguage.java @@ -43,8 +43,7 @@ public abstract class DMIBIOSLanguage { @Nullable public abstract String currentLanguage(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBaseboard.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBaseboard.java index 4375cfa..bc7f0e5 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBaseboard.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIBaseboard.java @@ -75,8 +75,7 @@ public abstract class DMIBaseboard { @Nullable public abstract Integer containedObjectHandles(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIChassis.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIChassis.java index e068214..20c4edf 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIChassis.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIChassis.java @@ -93,8 +93,7 @@ public abstract class DMIChassis { @Nullable public abstract String skuNumber(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIPortConnectorInformation.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIPortConnectorInformation.java index 5736918..a5b9002 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIPortConnectorInformation.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMIPortConnectorInformation.java @@ -53,8 +53,7 @@ public abstract class DMIPortConnectorInformation { @Nullable public abstract String portType(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMISystemSlots.java b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMISystemSlots.java index 6aa64c1..babaaac 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/board/DMISystemSlots.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/board/DMISystemSlots.java @@ -63,8 +63,7 @@ public abstract class DMISystemSlots { @Nullable public abstract String busAddress(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIMemoryDevice.java b/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIMemoryDevice.java index 0d34634..3f906f0 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIMemoryDevice.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIMemoryDevice.java @@ -161,8 +161,7 @@ public abstract class DMIMemoryDevice { @Nullable public abstract String logicalSize(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIPhysicalMemoryArray.java b/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIPhysicalMemoryArray.java index 65a44fa..d87397c 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIPhysicalMemoryArray.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/memory/DMIPhysicalMemoryArray.java @@ -57,8 +57,7 @@ public abstract class DMIPhysicalMemoryArray { @Nullable public abstract Integer numberOfDevices(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/peripheral/DMIPortableBattery.java b/src/main/java/io/github/eggy03/dmidecode/entity/peripheral/DMIPortableBattery.java index 5682403..73519a7 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/peripheral/DMIPortableBattery.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/peripheral/DMIPortableBattery.java @@ -77,8 +77,7 @@ public abstract class DMIPortableBattery { @Nullable public abstract String oemSpecificInformation(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMICache.java b/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMICache.java index eae750c..33f6fc9 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMICache.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMICache.java @@ -83,8 +83,7 @@ public abstract class DMICache { @Nullable public abstract String associativity(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMIProcessor.java b/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMIProcessor.java index 6621d6e..6b54778 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMIProcessor.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/processor/DMIProcessor.java @@ -131,8 +131,7 @@ public abstract class DMIProcessor { @Nullable public abstract List<@Nullable String> characteristics(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this); diff --git a/src/main/java/io/github/eggy03/dmidecode/entity/system/DMISystem.java b/src/main/java/io/github/eggy03/dmidecode/entity/system/DMISystem.java index 50428cc..5a06d93 100644 --- a/src/main/java/io/github/eggy03/dmidecode/entity/system/DMISystem.java +++ b/src/main/java/io/github/eggy03/dmidecode/entity/system/DMISystem.java @@ -65,8 +65,7 @@ public abstract class DMISystem { @Nullable public abstract String family(); - @Override - public String toString() { + public String toJson() { return new ObjectMapper() .writerWithDefaultPrettyPrinter() .writeValueAsString(this);