Skip to content

Commit

Permalink
Feat: LDIO component debug logger (#287)
Browse files Browse the repository at this point in the history
  • Loading branch information
Yalz committed Aug 17, 2023
1 parent f367a5d commit 0368849
Show file tree
Hide file tree
Showing 7 changed files with 122 additions and 3 deletions.
17 changes: 17 additions & 0 deletions docs/_ldio/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 + '\'' +
'}';
}
}
}
Original file line number Diff line number Diff line change
@@ -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<Model> apply(Content content) {
logger.debug("Starting point: " + content);

return adapter.apply(content);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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."
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<PipelineConfig> pipelines;

Expand Down

0 comments on commit 0368849

Please sign in to comment.