All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.structurizr.dsl.PluginDslContext Maven / Gradle / Ivy

The newest version!
package com.structurizr.dsl;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

class PluginDslContext extends DslContext {

    private final String fullyQualifiedClassName;
    private final File dslFile;
    private final StructurizrDslParser dslParser;
    private final Map parameters = new HashMap<>();

    PluginDslContext(String fullyQualifiedClassName, File dslFile, StructurizrDslParser dslParser) {
        this.fullyQualifiedClassName = fullyQualifiedClassName;
        this.dslFile = dslFile;
        this.dslParser = dslParser;
    }

    void addParameter(String name, String value) {
        parameters.put(name, value);
    }

    @Override
    void end() {
        try {
            Class pluginClass = loadClass(fullyQualifiedClassName, dslFile);
            StructurizrDslPlugin plugin = (StructurizrDslPlugin)pluginClass.getDeclaredConstructor().newInstance();
            StructurizrDslPluginContext pluginContext = new StructurizrDslPluginContext(dslParser, dslFile, getWorkspace(), parameters);
            plugin.run(pluginContext);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("Error running plugin " + fullyQualifiedClassName + ", caused by " + e.getClass().getName() + ": " + e.getMessage());
        }
    }

    @Override
    protected String[] getPermittedTokens() {
        return new String[0];
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy