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