Использование скорости для разработки плагина - PullRequest
0 голосов
/ 02 мая 2020

Идея состоит в том, чтобы создать предопределенный класс java на основе конфигурации через пользовательский интерфейс. Создано действие, которое открывает интерфейс для получения конфигурации. Предопределенный пользовательский код java хранится в виде шаблона скорости внутри ресурсов плагина. При использовании приведенного ниже кода для загрузки шаблона выдается ошибка ( Ресурс не найден )

VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
velocityEngine.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
velocityEngine.setProperty("runtime.log.logsystem.class","org.apache.velocity.runtime.log.NullLogSystem");
velocityEngine.init();
Template t = velocityEngine.getTemplate("EntityModel.vm");

1 Ответ

0 голосов
/ 12 мая 2020

Используемые ниже методы для достижения требуемого результата. Оценка скорости принимает контекст скорости, файл SpeedTemplate в качестве Reader, и для записи вывода требуется программа записи. Приведенная ниже функция была полезна для игнорирования проблем загрузчика ресурсов в любой среде.

        VelocityEngine velocityEngine = new VelocityEngine();
        velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
        velocityEngine.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
        velocityEngine.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM, new NullLogChute());
        velocityEngine.init();
        VelocityContext context = new VelocityContext();
        context.put("fields",model.getFields());
        context.put("vFunction",new VelocityFunction());
        InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("EntityModel.vm");
        InputStreamReader inputStreamReader = new InputStreamReader(resourceAsStream);
        velocityEngine.evaluate(context, writer, "ERROR", inputStreamReader);
...