Skip to content

Commit

Permalink
Add lazy wrappers around diagram generators to make server init more …
Browse files Browse the repository at this point in the history
…robust
  • Loading branch information
pepijnve committed Feb 10, 2024
1 parent bd5b58f commit bc25253
Show file tree
Hide file tree
Showing 17 changed files with 121 additions and 36 deletions.
6 changes: 0 additions & 6 deletions ditaa/src/main/java/org/asciidoctor/diagram/ditaa/Ditaa.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,6 @@ public class Ditaa implements DiagramGenerator
public static final MimeType DEFAULT_CONTENT_TYPE = MimeType.TEXT_PLAIN_UTF8;
public static final String DEFAULT_CHARSET = "UTF-8";

@Override
public String getName()
{
return "ditaa";
}

@Override
public ResponseData generate(Request request) throws IOException {
MimeType format = request.headers.getValue(HTTPHeader.ACCEPT);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.asciidoctor.diagram.ditaa;

import org.asciidoctor.diagram.DiagramGenerator;
import org.asciidoctor.diagram.LazyDiagramGenerator;

public class DitaaDiagramGenerator extends LazyDiagramGenerator {
public DitaaDiagramGenerator() {
super("ditaa");
}

@Override
protected DiagramGenerator createGenerator() throws Exception {
return new Ditaa();
}
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
org.asciidoctor.diagram.ditaa.Ditaa
org.asciidoctor.diagram.ditaa.DitaaDiagramGenerator
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,6 @@ public class PlantUML implements DiagramGenerator
}
}

@Override
public String getName()
{
return "plantuml";
}

@Override
public ResponseData generate(Request request) throws IOException {
File graphviz;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.asciidoctor.diagram.plantuml;

import org.asciidoctor.diagram.DiagramGenerator;
import org.asciidoctor.diagram.LazyDiagramGenerator;

public class PlantUMLDiagramGenerator extends LazyDiagramGenerator {
public PlantUMLDiagramGenerator() {
super("plantuml");
}

@Override
protected DiagramGenerator createGenerator() throws Exception {
return new PlantUML();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,6 @@ public class PlantUMLPreprocessor implements DiagramGenerator
{
private static final MimeType DEFAULT_OUTPUT_FORMAT = MimeType.TEXT_PLAIN_UTF8;

@Override
public String getName()
{
return "plantumlpreprocessor";
}

@Override
public ResponseData generate(Request request) throws IOException {
MimeType format = request.headers.getValue(HTTPHeader.ACCEPT);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.asciidoctor.diagram.plantuml;

import org.asciidoctor.diagram.DiagramGenerator;
import org.asciidoctor.diagram.LazyDiagramGenerator;

public class PlantUMLPreprocessorDiagramGenerator extends LazyDiagramGenerator {
public PlantUMLPreprocessorDiagramGenerator() {
super("plantumlpreprocessor");
}

@Override
protected DiagramGenerator createGenerator() throws Exception {
return new PlantUMLPreprocessorDiagramGenerator();
}
}
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
org.asciidoctor.diagram.plantuml.PlantUML
org.asciidoctor.diagram.plantuml.PlantUMLPreprocessor
org.asciidoctor.diagram.plantuml.PlantUMLDiagramGenerator
org.asciidoctor.diagram.plantuml.PlantUMLPreprocessorDiagramGenerator
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,5 @@
import java.io.IOException;

public interface DiagramGenerator {
String getName();

ResponseData generate(Request request) throws IOException;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.asciidoctor.diagram;

import java.io.IOException;

public abstract class LazyDiagramGenerator implements NamedDiagramGenerator {
private final String name;
private DiagramGenerator diagramGenerator;
private IOException loadError;

public LazyDiagramGenerator(String name) {
this.name = name;
}

public String getName() {
return name;
}

protected abstract DiagramGenerator createGenerator() throws Exception;

public ResponseData generate(Request request) throws IOException {
if (loadError != null) {
throw loadError;
}

if (diagramGenerator == null) {
try {
diagramGenerator = createGenerator();
} catch (Exception e) {
loadError = new IOException(getName() + " is could not be initialised", e);
throw loadError;
}
}

return diagramGenerator.generate(request);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.asciidoctor.diagram;

public interface NamedDiagramGenerator extends DiagramGenerator {
String getName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,6 @@ static ParseDsl createParseDsl() {

private static final MimeType DEFAULT_OUTPUT_FORMAT = PLANTUML;

@Override
public String getName() {
return "structurizr";
}

@Override
public ResponseData generate(Request request) throws IOException {
MimeType format = request.headers.getValue(HTTPHeader.ACCEPT);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.asciidoctor.diagram.structurizr;

import org.asciidoctor.diagram.DiagramGenerator;
import org.asciidoctor.diagram.LazyDiagramGenerator;

public class StructurizrDiagramGenerator extends LazyDiagramGenerator {
public StructurizrDiagramGenerator() {
super("structurizr");
}

@Override
protected DiagramGenerator createGenerator() throws Exception {
return new Structurizr();
}
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
org.asciidoctor.diagram.structurizr.Structurizr
org.asciidoctor.diagram.structurizr.StructurizrDiagramGenerator
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,6 @@
public class Syntrax implements DiagramGenerator {
public static final MimeType DEFAULT_OUTPUT_FORMAT = MimeType.SVG;

@Override
public String getName() {
return "syntrax";
}

@Override
public ResponseData generate(Request request) throws IOException {
MimeType format = request.headers.getValue(HTTPHeader.ACCEPT);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.asciidoctor.diagram.syntrax;

import org.asciidoctor.diagram.DiagramGenerator;
import org.asciidoctor.diagram.LazyDiagramGenerator;

public class SyntraxDiagramGenerator extends LazyDiagramGenerator {
public SyntraxDiagramGenerator() {
super("syntrax");
}

@Override
protected DiagramGenerator createGenerator() throws Exception {
return new Syntrax();
}
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
org.asciidoctor.diagram.syntrax.Syntrax
org.asciidoctor.diagram.syntrax.SyntraxDiagramGenerator

0 comments on commit bc25253

Please sign in to comment.