From 89fd601cf52c63114b7140643f1c9faa9df9c862 Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Fri, 10 Jul 2026 14:10:40 +0100 Subject: [PATCH] refactor(engine): drop the vestigial Component marker interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Component was an empty marker left over from the retired ECS engine — implemented by 16 live value types (Margin, Padding, Anchor, TextStyle, ImageData, …) but consumed as a type nowhere: no bound, parameter, instanceof, collection or Class token references it, so it carries no contract. Remove `implements Component` (and its import) from all 16, then delete the interface and its package-info, emptying and removing the engine.components.core package. A leftover fully-commented-out EntityTest in that package's test tree goes with it. The value types are unchanged otherwise; no behavior change. --- .../engine/components/content/ImageData.java | 3 +-- .../components/content/ImageIntrinsicSize.java | 3 +-- .../components/content/barcode/BarcodeData.java | 3 +-- .../content/header_footer/HeaderFooterConfig.java | 3 +-- .../content/metadata/DocumentMetadata.java | 3 +-- .../content/protection/PdfProtectionConfig.java | 3 +-- .../engine/components/content/shape/Stroke.java | 3 +-- .../components/content/text/BlockTextData.java | 3 +-- .../engine/components/content/text/Text.java | 3 +-- .../engine/components/content/text/TextStyle.java | 3 +-- .../content/watermark/WatermarkConfig.java | 3 +-- .../compose/engine/components/core/Component.java | 4 ---- .../engine/components/core/package-info.java | 7 ------- .../engine/components/geometry/ContentSize.java | 3 +-- .../compose/engine/components/layout/Anchor.java | 3 +-- .../engine/components/style/ComponentColor.java | 3 +-- .../compose/engine/components/style/Margin.java | 3 +-- .../compose/engine/components/style/Padding.java | 3 +-- .../engine/components/core/EntityTest.java | 15 --------------- 19 files changed, 16 insertions(+), 58 deletions(-) delete mode 100644 src/main/java/com/demcha/compose/engine/components/core/Component.java delete mode 100644 src/main/java/com/demcha/compose/engine/components/core/package-info.java delete mode 100644 src/test/java/com/demcha/compose/engine/components/core/EntityTest.java diff --git a/src/main/java/com/demcha/compose/engine/components/content/ImageData.java b/src/main/java/com/demcha/compose/engine/components/content/ImageData.java index aaef7baf4..7e1e96a1a 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/ImageData.java +++ b/src/main/java/com/demcha/compose/engine/components/content/ImageData.java @@ -1,6 +1,5 @@ package com.demcha.compose.engine.components.content; -import com.demcha.compose.engine.components.core.Component; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; @@ -12,7 +11,7 @@ @Getter @ToString(exclude = "bytes") @EqualsAndHashCode(of = "fingerprint") -public final class ImageData implements Component { +public final class ImageData { private final byte[] bytes; private final String sourceKey; private final String fingerprint; diff --git a/src/main/java/com/demcha/compose/engine/components/content/ImageIntrinsicSize.java b/src/main/java/com/demcha/compose/engine/components/content/ImageIntrinsicSize.java index f394d1f89..a134831f5 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/ImageIntrinsicSize.java +++ b/src/main/java/com/demcha/compose/engine/components/content/ImageIntrinsicSize.java @@ -1,6 +1,5 @@ package com.demcha.compose.engine.components.content; -import com.demcha.compose.engine.components.core.Component; -public record ImageIntrinsicSize(double width, double height) implements Component { +public record ImageIntrinsicSize(double width, double height) { } diff --git a/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeData.java b/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeData.java index 787bdd14e..dc11bf661 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeData.java +++ b/src/main/java/com/demcha/compose/engine/components/content/barcode/BarcodeData.java @@ -1,6 +1,5 @@ package com.demcha.compose.engine.components.content.barcode; -import com.demcha.compose.engine.components.core.Component; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; @@ -19,7 +18,7 @@ @Getter @ToString @EqualsAndHashCode -public final class BarcodeData implements Component { +public final class BarcodeData { private final String content; private final BarcodeType type; diff --git a/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfig.java b/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfig.java index 657523a2a..7f6b86bc8 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfig.java +++ b/src/main/java/com/demcha/compose/engine/components/content/header_footer/HeaderFooterConfig.java @@ -1,6 +1,5 @@ package com.demcha.compose.engine.components.content.header_footer; -import com.demcha.compose.engine.components.core.Component; import com.demcha.compose.engine.components.content.text.TextStyle; import lombok.Builder; import lombok.Getter; @@ -25,7 +24,7 @@ */ @Getter @Builder -public final class HeaderFooterConfig implements Component { +public final class HeaderFooterConfig { /** Whether this is a HEADER or FOOTER zone. */ private final HeaderFooterZone zone; diff --git a/src/main/java/com/demcha/compose/engine/components/content/metadata/DocumentMetadata.java b/src/main/java/com/demcha/compose/engine/components/content/metadata/DocumentMetadata.java index 93f057df8..52c3e51fb 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/metadata/DocumentMetadata.java +++ b/src/main/java/com/demcha/compose/engine/components/content/metadata/DocumentMetadata.java @@ -1,6 +1,5 @@ package com.demcha.compose.engine.components.content.metadata; -import com.demcha.compose.engine.components.core.Component; import lombok.Builder; import lombok.Getter; @@ -14,7 +13,7 @@ */ @Getter @Builder -public final class DocumentMetadata implements Component { +public final class DocumentMetadata { /** Document title shown in the PDF viewer title bar and search results. */ private final String title; diff --git a/src/main/java/com/demcha/compose/engine/components/content/protection/PdfProtectionConfig.java b/src/main/java/com/demcha/compose/engine/components/content/protection/PdfProtectionConfig.java index 4bc3594f4..0d1b095c8 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/protection/PdfProtectionConfig.java +++ b/src/main/java/com/demcha/compose/engine/components/content/protection/PdfProtectionConfig.java @@ -1,6 +1,5 @@ package com.demcha.compose.engine.components.content.protection; -import com.demcha.compose.engine.components.core.Component; import lombok.Builder; import lombok.Getter; @@ -15,7 +14,7 @@ */ @Getter @Builder -public final class PdfProtectionConfig implements Component { +public final class PdfProtectionConfig { /** Password required to open the document (null = no user password). */ private final String userPassword; diff --git a/src/main/java/com/demcha/compose/engine/components/content/shape/Stroke.java b/src/main/java/com/demcha/compose/engine/components/content/shape/Stroke.java index cde83c733..7957d095f 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/shape/Stroke.java +++ b/src/main/java/com/demcha/compose/engine/components/content/shape/Stroke.java @@ -1,10 +1,9 @@ package com.demcha.compose.engine.components.content.shape; -import com.demcha.compose.engine.components.core.Component; import java.awt.*; -public record Stroke(StrokeColor strokeColor, double width) implements Component { +public record Stroke(StrokeColor strokeColor, double width) { public static final double DEFAULT_WIDTH = 2.0; public Stroke(Color color) { diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/BlockTextData.java b/src/main/java/com/demcha/compose/engine/components/content/text/BlockTextData.java index e17b4edba..51e52f375 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/text/BlockTextData.java +++ b/src/main/java/com/demcha/compose/engine/components/content/text/BlockTextData.java @@ -1,7 +1,6 @@ package com.demcha.compose.engine.components.content.text; import com.demcha.compose.engine.components.content.text.LineTextData; -import com.demcha.compose.engine.components.core.Component; import java.util.List; @@ -9,7 +8,7 @@ * Immutable block-text payload consisting of positioned/measured lines plus * the block's inter-line spacing contract. */ -public record BlockTextData(List lines, float lineSpacing) implements Component { +public record BlockTextData(List lines, float lineSpacing) { public static final BlockTextData EMPTY = new BlockTextData(List.of(), 0); public static BlockTextData empty() { diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/Text.java b/src/main/java/com/demcha/compose/engine/components/content/text/Text.java index 49714aa97..9ed4281ba 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/text/Text.java +++ b/src/main/java/com/demcha/compose/engine/components/content/text/Text.java @@ -1,10 +1,9 @@ package com.demcha.compose.engine.components.content.text; -import com.demcha.compose.engine.components.core.Component; import lombok.extern.slf4j.Slf4j; @Slf4j -public record Text(String value) implements Component { +public record Text(String value) { public static final Text EMPTY = new Text(""); public Text(String value) { diff --git a/src/main/java/com/demcha/compose/engine/components/content/text/TextStyle.java b/src/main/java/com/demcha/compose/engine/components/content/text/TextStyle.java index 49bbfe6b6..b422f95d0 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/text/TextStyle.java +++ b/src/main/java/com/demcha/compose/engine/components/content/text/TextStyle.java @@ -1,13 +1,12 @@ package com.demcha.compose.engine.components.content.text; import com.demcha.compose.font.FontName; -import com.demcha.compose.engine.components.core.Component; import lombok.Builder; import java.awt.*; @Builder -public record TextStyle(FontName fontName, double size, TextDecoration decoration, Color color) implements Component { +public record TextStyle(FontName fontName, double size, TextDecoration decoration, Color color) { public static TextStyle DEFAULT_STYLE = new TextStyle(FontName.HELVETICA, 14, TextDecoration.DEFAULT, Color.BLACK); } diff --git a/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkConfig.java b/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkConfig.java index 1d2d12f7a..b657bb9fe 100644 --- a/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkConfig.java +++ b/src/main/java/com/demcha/compose/engine/components/content/watermark/WatermarkConfig.java @@ -1,6 +1,5 @@ package com.demcha.compose.engine.components.content.watermark; -import com.demcha.compose.engine.components.core.Component; import lombok.Builder; import lombok.Getter; @@ -22,7 +21,7 @@ */ @Getter @Builder -public final class WatermarkConfig implements Component { +public final class WatermarkConfig { // ---- Text watermark fields ---- /** The text to render as a watermark (null if image-based). */ diff --git a/src/main/java/com/demcha/compose/engine/components/core/Component.java b/src/main/java/com/demcha/compose/engine/components/core/Component.java deleted file mode 100644 index 8af5ca04e..000000000 --- a/src/main/java/com/demcha/compose/engine/components/core/Component.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.demcha.compose.engine.components.core; - -public interface Component { -} diff --git a/src/main/java/com/demcha/compose/engine/components/core/package-info.java b/src/main/java/com/demcha/compose/engine/components/core/package-info.java deleted file mode 100644 index 60f414e33..000000000 --- a/src/main/java/com/demcha/compose/engine/components/core/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Core ECS identity and component storage primitives. - * - *

Ownership: Owned by the shared engine foundation and used by every low-level layout/render pipeline.

- *

Extension rules: Keep this package minimal; new layout math belongs in engine helpers rather than on Entity itself.

- */ -package com.demcha.compose.engine.components.core; \ No newline at end of file diff --git a/src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java b/src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java index 17ac41984..c827a4dc8 100644 --- a/src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java +++ b/src/main/java/com/demcha/compose/engine/components/geometry/ContentSize.java @@ -1,6 +1,5 @@ package com.demcha.compose.engine.components.geometry; -import com.demcha.compose.engine.components.core.Component; /** * Declared content box size for an entity. @@ -10,5 +9,5 @@ * margin and padding to derive outer-box size and final placement. *

*/ -public record ContentSize(double width, double height) implements Component { +public record ContentSize(double width, double height) { } diff --git a/src/main/java/com/demcha/compose/engine/components/layout/Anchor.java b/src/main/java/com/demcha/compose/engine/components/layout/Anchor.java index 67516c633..6871b8f3b 100644 --- a/src/main/java/com/demcha/compose/engine/components/layout/Anchor.java +++ b/src/main/java/com/demcha/compose/engine/components/layout/Anchor.java @@ -1,13 +1,12 @@ package com.demcha.compose.engine.components.layout; -import com.demcha.compose.engine.components.core.Component; /** * Horizontal + vertical placement anchor — a plain value pairing an * {@link HAnchor} and a {@link VAnchor}. Consumers read {@code h()} / {@code v()} * and the static factories to describe how content aligns within its area. */ -public record Anchor(HAnchor h, VAnchor v) implements Component { +public record Anchor(HAnchor h, VAnchor v) { public static Anchor topLeft() { return new Anchor(HAnchor.LEFT, VAnchor.TOP); } diff --git a/src/main/java/com/demcha/compose/engine/components/style/ComponentColor.java b/src/main/java/com/demcha/compose/engine/components/style/ComponentColor.java index 81483a67c..d431484c6 100644 --- a/src/main/java/com/demcha/compose/engine/components/style/ComponentColor.java +++ b/src/main/java/com/demcha/compose/engine/components/style/ComponentColor.java @@ -1,10 +1,9 @@ package com.demcha.compose.engine.components.style; -import com.demcha.compose.engine.components.core.Component; import java.awt.*; -public record ComponentColor(Color color) implements Component { +public record ComponentColor(Color color) { // --- Grayscale --- public static final Color BLACK = new Color(0, 0, 0); public static final Color DARK_GRAY = new Color(64, 64, 64); diff --git a/src/main/java/com/demcha/compose/engine/components/style/Margin.java b/src/main/java/com/demcha/compose/engine/components/style/Margin.java index 49e6e2cbb..45294fb41 100644 --- a/src/main/java/com/demcha/compose/engine/components/style/Margin.java +++ b/src/main/java/com/demcha/compose/engine/components/style/Margin.java @@ -1,9 +1,8 @@ package com.demcha.compose.engine.components.style; -import com.demcha.compose.engine.components.core.Component; -public record Margin(double top, double right, double bottom, double left) implements Component { +public record Margin(double top, double right, double bottom, double left) { public static Margin of(double value) { return new Margin(value, value, value, value); diff --git a/src/main/java/com/demcha/compose/engine/components/style/Padding.java b/src/main/java/com/demcha/compose/engine/components/style/Padding.java index 7062c6284..b52b705f1 100644 --- a/src/main/java/com/demcha/compose/engine/components/style/Padding.java +++ b/src/main/java/com/demcha/compose/engine/components/style/Padding.java @@ -1,11 +1,10 @@ package com.demcha.compose.engine.components.style; -import com.demcha.compose.engine.components.core.Component; import lombok.extern.slf4j.Slf4j; @Slf4j -public record Padding(double top, double right, double bottom, double left) implements Component { +public record Padding(double top, double right, double bottom, double left) { public static Padding zero() { log.debug("Getting zero padding"); return new Padding(0.0, 0.0, 0.0, 0.0); diff --git a/src/test/java/com/demcha/compose/engine/components/core/EntityTest.java b/src/test/java/com/demcha/compose/engine/components/core/EntityTest.java deleted file mode 100644 index 7d5d61f9a..000000000 --- a/src/test/java/com/demcha/compose/engine/components/core/EntityTest.java +++ /dev/null @@ -1,15 +0,0 @@ -//package com.demcha.compose.engine.components.core; -// -//import org.junit.jupiter.params.provider.Arguments; -// -//import java.util.stream.Stream; -// -//class EntityTest { -// static Stream provideScenarios() { -// return Stream.of( -// Arguments.of() -// ); -// } -// -// -//} \ No newline at end of file