diff --git a/docs/_ldio/index.md b/docs/_ldio/index.md index f1360941c..deb0a66e8 100644 --- a/docs/_ldio/index.md +++ b/docs/_ldio/index.md @@ -39,6 +39,23 @@ orchestrator: - Note that one orchestrator can have multiple pipelines - Note that one pipeline can have multiple LDI Transformers and LDI Outputs +## LDIO DEBUG logging + +To enable logging the input model for a +* [LDIO Adapter](./ldio-adapters) +* [LDIO Transformer](./ldio-transformers) +* [LDIO Output](./ldio-outputs) + +Make sure you + +* Add the following property in your application config: + ````yaml + logging: + level: + be.vlaanderen.informatievlaanderen: DEBUG + ```` +* Add the ```debug: true``` property to your transformer or output config. + ## LDIO Process Flow ````mermaid diff --git a/ldi-api/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldi/types/LdiAdapter.java b/ldi-api/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldi/types/LdiAdapter.java index 49895c66c..7560fb9ed 100644 --- a/ldi-api/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldi/types/LdiAdapter.java +++ b/ldi-api/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldi/types/LdiAdapter.java @@ -21,5 +21,13 @@ record Content(String content, String mimeType) { public static Content of(String content, String mimeType) { return new Content(content, mimeType); } + + @Override + public String toString() { + return "Content {" + + "mimeType='" + mimeType + '\'' + + ", content='" + content + '\'' + + '}'; + } } } diff --git a/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/AdapterDebugger.java b/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/AdapterDebugger.java new file mode 100644 index 000000000..5906c0771 --- /dev/null +++ b/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/AdapterDebugger.java @@ -0,0 +1,25 @@ +package be.vlaanderen.informatievlaanderen.ldes.ldio.config; + +import be.vlaanderen.informatievlaanderen.ldes.ldi.types.LdiAdapter; +import org.apache.jena.rdf.model.Model; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.stream.Stream; + +public class AdapterDebugger implements LdiAdapter { + private final Logger logger; + private final LdiAdapter adapter; + + public AdapterDebugger(LdiAdapter adapter) { + this.logger = LoggerFactory.getLogger(adapter.getClass()); + this.adapter = adapter; + } + + @Override + public Stream apply(Content content) { + logger.debug("Starting point: " + content); + + return adapter.apply(content); + } +} diff --git a/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/FlowAutoConfiguration.java b/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/FlowAutoConfiguration.java index c56e91bf1..fad8b2bd9 100644 --- a/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/FlowAutoConfiguration.java +++ b/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/FlowAutoConfiguration.java @@ -25,6 +25,7 @@ import java.util.Map; import java.util.Optional; +import static be.vlaanderen.informatievlaanderen.ldes.ldio.config.OrchestratorConfig.DEBUG; import static be.vlaanderen.informatievlaanderen.ldes.ldio.config.OrchestratorConfig.ORCHESTRATOR_NAME; import static be.vlaanderen.informatievlaanderen.ldes.ldio.config.PipelineConfig.PIPELINE_NAME; @@ -69,7 +70,7 @@ public void initialiseLdiInput(PipelineConfig config) { config.getInput().getName()); LdiAdapter adapter = Optional.ofNullable(config.getInput().getAdapter()) - .map(adapterConfig -> (LdiAdapter) getLdiComponent(adapterConfig.getName(), adapterConfig.getConfig())) + .map(this::getLdioAdapter) .orElseGet(() -> { LOGGER.warn( "No adapter configured for pipeline %s. Please verify this is a desired scenario." @@ -90,12 +91,31 @@ public void initialiseLdiInput(PipelineConfig config) { registerBean(pipeLineName, ldiInput); } + private LdiAdapter getLdioAdapter(ComponentDefinition componentDefinition) { + boolean debug = componentDefinition.getConfig().getOptionalBoolean(DEBUG).orElse(false); + + LdiAdapter adapter = (LdiAdapter) getLdiComponent(componentDefinition.getName(), + componentDefinition.getConfig()); + + return debug ? new AdapterDebugger(adapter) : adapter; + } + private LdiTransformer getLdioTransformer(ComponentDefinition componentDefinition) { - return (LdiTransformer) getLdiComponent(componentDefinition.getName(), componentDefinition.getConfig()); + boolean debug = componentDefinition.getConfig().getOptionalBoolean(DEBUG).orElse(false); + + LdiTransformer ldiTransformer = (LdiTransformer) getLdiComponent(componentDefinition.getName(), + componentDefinition.getConfig()); + + return debug ? new TransformDebugger(ldiTransformer) : ldiTransformer; } private LdiOutput getLdioOutput(ComponentDefinition componentDefinition) { - return (LdiOutput) getLdiComponent(componentDefinition.getName(), componentDefinition.getConfig()); + boolean debug = componentDefinition.getConfig().getOptionalBoolean(DEBUG).orElse(false); + + LdiOutput ldiOutput = (LdiOutput) getLdiComponent(componentDefinition.getName(), + componentDefinition.getConfig()); + + return debug ? new OutputDebugger(ldiOutput) : ldiOutput; } private LdiComponent getLdiComponent(String beanName, ComponentProperties config) { diff --git a/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/OutputDebugger.java b/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/OutputDebugger.java new file mode 100644 index 000000000..49ea3e254 --- /dev/null +++ b/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/OutputDebugger.java @@ -0,0 +1,24 @@ +package be.vlaanderen.informatievlaanderen.ldes.ldio.config; + +import be.vlaanderen.informatievlaanderen.ldes.ldi.types.LdiOutput; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.riot.Lang; +import org.apache.jena.riot.RDFWriter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class OutputDebugger implements LdiOutput { + private final Logger log; + private final LdiOutput ldiOutput; + + public OutputDebugger(LdiOutput ldiOutput) { + this.ldiOutput = ldiOutput; + log = LoggerFactory.getLogger(ldiOutput.getClass()); + } + + @Override + public void accept(Model model) { + log.debug("Starting model: \n" + RDFWriter.source(model).lang(Lang.TTL).asString()); + ldiOutput.accept(model); + } +} diff --git a/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/TransformDebugger.java b/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/TransformDebugger.java new file mode 100644 index 000000000..d2776e03a --- /dev/null +++ b/ldi-orchestrator/ldio-application/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/TransformDebugger.java @@ -0,0 +1,24 @@ +package be.vlaanderen.informatievlaanderen.ldes.ldio.config; + +import be.vlaanderen.informatievlaanderen.ldes.ldi.types.LdiTransformer; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.riot.Lang; +import org.apache.jena.riot.RDFWriter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TransformDebugger implements LdiTransformer { + private final Logger log; + private final LdiTransformer ldiTransformer; + + public TransformDebugger(LdiTransformer ldiTransformer) { + this.ldiTransformer = ldiTransformer; + log = LoggerFactory.getLogger(ldiTransformer.getClass()); + } + + @Override + public Model apply(Model model) { + log.debug("Starting model: \n" + RDFWriter.source(model).lang(Lang.TTL).asString()); + return ldiTransformer.apply(model); + } +} diff --git a/ldi-orchestrator/ldio-common/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/OrchestratorConfig.java b/ldi-orchestrator/ldio-common/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/OrchestratorConfig.java index 64e196712..336dbf0f9 100644 --- a/ldi-orchestrator/ldio-common/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/OrchestratorConfig.java +++ b/ldi-orchestrator/ldio-common/src/main/java/be/vlaanderen/informatievlaanderen/ldes/ldio/config/OrchestratorConfig.java @@ -11,6 +11,7 @@ @ConfigurationProperties(prefix = "orchestrator") public class OrchestratorConfig { public static final String ORCHESTRATOR_NAME = "orchestrator.name"; + public static final String DEBUG = "debug"; private String name = randomUUID().toString(); private List pipelines;