Как программно преобразовать вики-разметку JIRA в HTML с помощью нативного API Atlassian?

Я пытаюсь получить описание проблемы от JIRA, чтобы поместить ее в шаблон формата хранилища слияния, чтобы создать страницу в слиянии. Но я не смог найти способ перевести описание необработанных данных в распознаваемый формат формата хранения. Вот конкретный пример: Для проблемы в JIRA со следующим описанием:

введите описание изображения здесь

Строка описания, которую я получаю, вызывая com.atlassian.jira.issue.Issue.getDescription():

{color:#14892c}Recently Updated{color}
h1. *_As you and your team create content this area will fill up and display the latest updates._*

Если я не ошибаюсь, полученная строка - это ее шаблонное представление вики. Вставка его непосредственно в формат хранилища не будет распознаваться механизмом шаблонов, поэтому не будет правильно отображаться.

Я пытался использовать, чтобы заключить строку, но это не работает. Кажется, мне нужно преобразовать вики-представление в HTML или XHTML. Как я могу добиться этого в коде Java?

Спасибо

2 ответа

Чтобы преобразовать вики-разметку JIRA в вывод в формате HTML из JIRA:

import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.ComponentManager;

public String renderWikiMarkup(Issue issue) {
    RendererManager rendererManager = ComponentManager.getComponent(RendererManager.class);
    JiraRendererPlugin renderer = rendererManager.getRendererForType("atlassian-wiki-renderer");
    String output = renderer.render(issue.description, issue.getIssueRenderContext());
    return output;
}

Вот полностью рабочее решение для Atlassian Jira 8.0.0 или новее.

      import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.RendererManager;
import com.atlassian.jira.issue.fields.renderer.JiraRendererPlugin;
import com.atlassian.jira.issue.fields.renderer.IssueRenderContext;

public String renderWikiMarkupOfDescription(String descriptor, Issue issue) {
    RendererManager rendererManager = ComponentAccessor.getComponentOfType(RendererManager.class);
    JiraRendererPlugin renderer = rendererManager.getRendererForType("atlassian-wiki-renderer");
    String output = renderer.render(descriptor, new IssueRenderContext(issue));
    return output;
}

public String renderWikiMarkupOfEnvironment(String environment, Issue issue) {
    RendererManager rendererManager = ComponentAccessor.getComponentOfType(RendererManager.class);
    JiraRendererPlugin renderer = rendererManager.getRendererForType("atlassian-wiki-renderer");
    String output = renderer.render(environment, new IssueRenderContext(issue));
    return output;
}

И использование:

      renderWikiMarkupOfDescription(issue.getDescription(), issue);
renderWikiMarkupOfEnvironment(issue.getEnvironment(), issue);

И скриншоты, подтверждающие 100% успех работы:

Другие вопросы по тегам