Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## **Description**

Provide a clear and concise description of the changes in this PR.
What problem does it solve? What does it add or improve?

## **Type of Change**

Keep all that apply:

- Bug fix
- New feature
- Documentation update
- Refactor
- Tests
- Other (please describe):

## **Related Issues**

If this PR closes or relates to an existing issue, link it here:
111 changes: 110 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,118 @@ commits and PRs that contributed to each of the releases.

This project tries its best to adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

The following headings may be used while categorizing the list of changes made in each version:

- New Features
- Removed Features
- Bug Fixes
- Non-Breaking Changes
- Breaking Changes
- Test Changes
- Dependency Updates
- Documentation
- Known Issues

## [0.2.0] - April 06, 2026

This update introduces several breaking changes and is not backwards compatible with the previous versions.
For a complete list of changes, see the enclosed [PR](https://github.com/eggy03/dmidecode4j/pull/2)

### Non-Breaking Changes

- Replaced the underlying mapper from GSON to Jackson
- Replaced `DMIType.getCommand(int)` with `DMIType.getCommandFor(DMIType)` in `DMIType.java`.
- Updated all service classes to use the new `DMIType.getCommandFor()` method.

### Breaking Changes

- Removed all traces of `Lombok` and replaced them with `Immutables` equivalents for deep immutability of entity
classes.
As a result, the builder methods now have a slightly different syntax. The remaining changes involve writing more
boilerplate code to make up for removal of Lombok's annotations but are non-breaking in nature.
The complete list of changes can be found in the enclosed PR.

During Lombok, the syntax for an entity builder was as follows:

```java
import io.github.eggy03.dmidecode.entity.processor.DMIProcessor;

void main() {
// building a new entity using builder
DMIProcessor processor = DMIProcessor.Builder.build();


DMIProcessor processorTwo = processor.toBuilder().build();

// accessing fields
processor.getCurrentSpeed();
}


```

With Immutables, the new syntax is:

```java
import io.github.eggy03.dmidecode.entity.processor.DMIProcessor;

@SuppressWarnings("all")
void main() {

// building a new entity using builder
DMIProcessor processor = new DMIProcessor.Builder().build();

// updating a built entity
DMIProcessor processorTwo = processor.withProperties();

// accessing fields
processor.currentSpeed();
}
```

- All entities have been converted to their abstract forms.
Immutables handles their concrete implementation during compile time.
This is technically not a breaking change since the generated implementations retain their `pre-0.2.0` names

- `CommonDMIMapper#mapToList` returns an unmodifiable list using `Collections.unmodifiableList`

### Test Changes

- Updated corresponding entity tests to use the `Immutables` builder pattern
- Updated `MockEntityClass` in `CommonDMIMapperTest` to use Jackson's `@JsonProperty` as a replacement for GSON's
`@SerializedValue`.
- Removed all traces of Lombok from the tests.

### Dependency Updates

- Added Jackson and Immutables BOMs and dependencies
- Removed GSON and Lombok
- Updated source generation plugins to support packing Immutables generated code in `sources.jar`
- Updated `maven-compiler-plugin` from `3.14.1` to `3.15.0`
- Updated `maven-surefire-plugin` from `3.5.4` to `3.5.5`
- Updated `central-publishing-maven-plugin` from `0.9.0` to `0.10.0`
- Updated `assertj-core` from `3.27.6` to `3.27.7`

### Documentation

- Replaced JetBrains `@NotNull` and `@Nullable` and Lombok's `@NonNull` annotations with Jspecify equivalents.
For `@Unmodifiable`, an equivalent custom `@Unmodifiable` annotation has been introduced.

- Introduced two new annotations `@FragileMethod` and `@InvokesFragileMethod`.
These two annotations when used, document that a method or a constructor's implementation is fragile in nature
and may break in the future.

- Updated Javadocs to reflect the Immutable builder style examples
- Removed `@author` tag from Javadocs
- Updated developer mail in `pom.xml`
- Corrected `project.license.url` branch from `main` to `master` in `pom.xml`
- Added an implementation status table in `README.md`

## [0.1.1] - January 14, 2026

- `DMIProcessorService` now returns a list of `DMIProcessor` objects instead of an `Optional` object 0a0ea2306cbe2bf6f15bf14190c28be58f609f55
## Breaking Changes

- `DMIProcessorService` now returns a list of `DMIProcessor` objects instead of an `Optional<DMIProcessor>` instance

## [0.1.0] - January 13, 2026

Expand Down
48 changes: 48 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,5 +53,53 @@ public class ProcessorExample {
}
}
```

# Implementation Status

| Number | Type | Status |
|--------|----------------------------------|-------------|
| 0 | BIOS | Implemented |
| 1 | SYSTEM | Implemented |
| 2 | BASEBOARD | Implemented |
| 3 | CHASSIS | Implemented |
| 4 | PROCESSOR | Implemented |
| 5 | MEMORY_CONTROLLER | Pending |
| 6 | MEMORY_MODULE | Pending |
| 7 | CACHE | Implemented |
| 8 | PORT_CONNECTOR | Implemented |
| 9 | SYSTEM_SLOTS | Implemented |
| 10 | ONBOARD_DEVICES | Pending |
| 11 | OEM_SETTINGS | Pending |
| 12 | SYSTEM_CONFIGURATION_OPTIONS | Pending |
| 13 | BIOS_LANGUAGE | Implemented |
| 14 | GROUP_ASSOCIATIONS | Pending |
| 15 | SYSTEM_EVENT_LOG | Pending |
| 16 | PHYSICAL_MEMORY_ARRAY | Implemented |
| 17 | MEMORY_DEVICE | Implemented |
| 18 | THIRTY_TWO_BIT_MEMORY_ERROR | Pending |
| 19 | MEMORY_ARRAY_MAPPED_ADDRESS | Pending |
| 20 | MEMORY_DEVICE_MAPPED_ADDRESS | Pending |
| 21 | BUILT_IN_POINTING_DEVICE | Pending |
| 22 | PORTABLE_BATTERY | Implemented |
| 23 | SYSTEM_RESET | Pending |
| 24 | HARDWARE_SECURITY | Pending |
| 25 | SYSTEM_POWER_CONTROLS | Pending |
| 26 | VOLTAGE_PROBE | Pending |
| 27 | COOLING_DEVICE | Pending |
| 28 | TEMPERATURE_PROBE | Pending |
| 29 | ELECTRICAL_CURRENT_PROBE | Pending |
| 30 | OUT_OF_BAND_REMOTE_ACCESS | Pending |
| 31 | BOOT_INTEGRITY_SERVICES | Pending |
| 32 | SYSTEM_BOOT | Pending |
| 33 | SIXTY_FOUR_BIT_MEMORY_ERROR | Pending |
| 34 | MANAGEMENT_DEVICE | Pending |
| 35 | MANAGEMENT_DEVICE_COMPONENT | Pending |
| 36 | MANAGEMENT_DEVICE_THRESHOLD_DATA | Pending |
| 37 | MEMORY_CHANNEL | Pending |
| 38 | IPMI_DEVICE | Pending |
| 39 | POWER_SUPPLY | Pending |
| 40 | ADDITIONAL_INFORMATION | Pending |
| 41 | ONBOARD_DEVICE | Pending |

# License
This project is licensed under the [MIT License](/LICENSE).
Loading
Loading