JIRA обработчик почты GUI - PullRequest
       29

JIRA обработчик почты GUI

0 голосов
/ 17 октября 2019

Я подписан на https://developer.atlassian.com/server/jira/platform/creating-a-custom-mail-handler-for-jira/, чтобы создать плагин jira mail handler. Но я не могу получить параметры в классе EditDemoHandlerDetailsWebAction.java, который я добавляю в форму, когда пытаюсь создать новый обработчик почты. Но я могу получить параметры, когда пытаюсь редактировать уже существующий обработчик входящей почты, в это время я вижу параметры в методе copyServiceSettings.

Вот шаблон скорости для формы параметров

## couple of available navigation helpers
#set ($modifierKey = $action.browserUtils.getModifierKey())
#set ($submitAccessKey = $i18n.getText('AUI.form.submit.button.accesskey'))
#set ($submitTitle = $i18n.getText('AUI.form.submit.button.tooltip', [$submitAccessKey, $modifierKey]))
#set ($cancelAccessKey = $i18n.getText('AUI.form.cancel.link.accesskey'))
#set ($cancelTitle = $i18n.getText('AUI.form.cancel.link.tooltip', [$cancelAccessKey, $modifierKey]))
<html>
<head>
    <title>$action.handlerName</title>
</head>
<body>

<form class="aui" action="EditDemoHandlerDetails.jspa" method="POST" name="mailHandlerForm" id="mailHandlerForm">
    <div class="form-body">
        <h2>$action.handlerName</h2>
        <span class="global-errors-location">
            #if ($action.getHasErrorMessages())
                    #foreach ($error in $action.getFlushedErrorMessages())
                #AUImessage("error" "" $textutils.htmlEncode(${error}) "" "" "" "true")
            #end
                #end
            </span>
        <input type="hidden" name="atl_token" value="$atl_token">
        <label>$i18n.getText('demohandler.project')<input type="text" class="text" id="issue-key" name="issueKey" value="$!textutils.htmlEncode($issueKey)"></label>
        <label>$i18n.getText('demohandler.issueType')<input type="text" class="text" id="issueType" name="issueType" value="$!textutils.htmlEncode($issueType)"></label>       

        <div class="buttons-container form-footer">
            <div class="buttons">
                #if ($action.editing)
                    #set ($addButtonLabel = $i18n.getText('common.words.save'))
                #else
                    #set ($addButtonLabel = $i18n.getText('common.forms.add'))
                #end
                <input id="addButton" type="submit" class="button" value="$!addButtonLabel" accesskey="$submitAccessKey" title="$submitTitle">
                <a href="IncomingMailServers.jspa" class="cancel" accesskey="$cancelAccessKey" title="$cancelTitle">$i18n.getText("AUI.form.cancel.link.text")</a>
            </div>

        </div>
    </div>
</form>
</body>
</html>

Вот мой класс EditDemoHandlerDetailsWebAction, где я не могу получить параметры из формы

package com.example.plugins.tutorial.jira.mailhandlerdemo;

import com.atlassian.configurable.ObjectConfigurationException;
import com.atlassian.jira.plugins.mail.webwork.AbstractEditHandlerDetailsWebAction;
import com.atlassian.jira.service.JiraServiceContainer;
import com.atlassian.jira.service.services.file.AbstractMessageHandlingService;
import com.atlassian.jira.service.util.ServiceUtils;
import com.atlassian.jira.util.collect.MapBuilder;
import com.atlassian.plugin.PluginAccessor;
import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import com.example.plugins.tutorial.jira.mailhandlerdemo.parameter.ParameterKeys;


import java.util.Map;

@Scanned
public class EditDemoHandlerDetailsWebAction extends AbstractEditHandlerDetailsWebAction {
    private ProjectIssueKeyValidator projectIssueKeyValidator;
    private String project;
    private String issueType;

    public EditDemoHandlerDetailsWebAction(@ComponentImport PluginAccessor pluginAccessor, ProjectIssueKeyValidator issueKeyValidator) {
        super(pluginAccessor);
        this.projectIssueKeyValidator = issueKeyValidator;
    }

    @Override
    protected void copyServiceSettings(JiraServiceContainer jiraServiceContainer) throws ObjectConfigurationException {
        final String params = jiraServiceContainer.getProperty(AbstractMessageHandlingService.KEY_HANDLER_PARAMS);
        final Map<String, String> parameterMap = ServiceUtils.getParameterMap(params);
        project= parameterMap.get(ParameterKeys.PROJECT_KEY);
        issueType = parameterMap.get(ParameterKeys.ISSUE_TYPE);
    }

    @Override
    protected Map<String, String> getHandlerParams() {
        return MapBuilder.build(ParameterKeys.PROJECT_KEY, project, ParameterKeys.ISSUE_TYPE, issueType);
    }

    @Override
    protected void doValidation() {
        if (configuration == null) {
            return; // short-circuit in case we lost session, goes directly to doExecute which redirects user
        }
        super.doValidation();
        projectIssueKeyValidator.validateProjectKey(project, new WebWorkErrorCollector());
        projectIssueKeyValidator.validateIssue(issueType, new WebWorkErrorCollector());
    }
}

Вот atlassian-plugin.xml

<atlassian-plugin key="${atlassian.plugin.key}" name="${project.name}" plugins-version="2">
    <plugin-info>
        <description>${project.description}</description>
        <version>${project.version}</version>
        <vendor name="${project.organization.name}" url="${project.organization.url}" />
        <param name="plugin-icon">images/pluginIcon.png</param>
        <param name="plugin-logo">images/pluginLogo.png</param>
    </plugin-info>

    <!-- add our i18n resource -->
    <resource type="i18n" name="i18n" location="mail-handler-demo"/>

    <!-- add our web resources -->
    <web-resource key="mail-handler-demo-resources" name="mail-handler-demo Web Resources">
        <dependency>com.atlassian.auiplugin:ajs</dependency>

        <resource type="download" name="mail-handler-demo.css" location="/css/mail-handler-demo.css"/>
        <resource type="download" name="mail-handler-demo.js" location="/js/mail-handler-demo.js"/>
        <resource type="download" name="images/" location="/images"/>

        <context>mail-handler-demo</context>
    </web-resource>

    <message-handler i18n-name-key="demohandler.name"
                     key="demoHandler"
                     class="com.example.plugins.tutorial.jira.mailhandlerdemo.DelegateMessageHandler"
                     add-edit-url="/secure/admin/EditDemoHandlerDetails!default.jspa"
                     weight="0"/>

      <webwork1 key="actions" name="UI" class="java.lang.Object">
        <actions>
            <action name="com.example.plugins.tutorial.jira.mailhandlerdemo.EditDemoHandlerDetailsWebAction"
                    alias="EditDemoHandlerDetails"
                    roles-required="admin">
                <view name="input">/view/editDemoHandlerDetails.vm</view>
                <view name="securitybreach">/secure/views/securitybreach.jsp</view>
            </action>
        </actions>
    </webwork1>   
</atlassian-plugin>
...