首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PluginSettings的Jira SAL

使用PluginSettings的Jira SAL
EN

Stack Overflow用户
提问于 2015-05-08 08:47:03
回答 1查看 872关注 0票数 2

我寻找一种方法来存储特定于我的插件的项目配置。在第一步中,我只想存储一个简单的字符串,比如"Hello“。

所以,我发现的是萨尔和PluginSettings。https://developer.atlassian.com/docs/atlassian-platform-common-components/shared-access-layer/sal-services

这看起来很容易使用,但是我不知道如何将它实现到我的代码中。我使用了项目管理部分中发生的WebWork:

代码语言:javascript
复制
@Override
public String doDefault() throws Exception {
    Project project = getProjectManager().getProjectObjByKey(_projectKey);
    HttpServletRequest request = ExecutingHttpRequest.get();
    request.setAttribute((new StringBuilder()).append("com.atlassian.jira.projectconfig.util.ServletRequestProjectConfigRequestCache").append(":project").toString(), project);
    return INPUT;
}

@Override
protected String doExecute() throws Exception {
    Project project = getProjectManager().getProjectObjByKey(_projectKey);
    HttpServletRequest request = ExecutingHttpRequest.get();
    request.setAttribute((new StringBuilder()).append("com.atlassian.jira.projectconfig.util.ServletRequestProjectConfigRequestCache").append(":project").toString(), project);
    String param = request.getParameter("param");
    return SUCCESS;
}

public void setProjectKey(String projectKey) {
    _projectKey = projectKey;
    }

public String getProjectKey() {
    return _projectKey;
}

public String getBaseUrl() {
    return ComponentAccessor.getApplicationProperties().getString(APKeys.JIRA_BASEURL);
}

正如SAL所说,我实现了一个Settings-Class:

代码语言:javascript
复制
public CustomProjectSettings(
        final PluginSettingsFactory pluginSettingsFactory,
        final String projectKey) {
    this.pluginSettingsFactory = pluginSettingsFactory;
    this.projectKey = projectKey;
}

public void setValue(final String key, final String value) {
    final PluginSettings settings = pluginSettingsFactory
            .createSettingsForKey(projectKey);
    settings.put(key, value);
}

public Object getValue(final String key) {
    final PluginSettings settings = pluginSettingsFactory
            .createSettingsForKey(projectKey);
    return settings.get(key);
}

我在xml中添加了组件:

代码语言:javascript
复制
<component-import key="pluginSettingsFactory" interface="com.atlassian.sal.api.pluginsettings.PluginSettingsFactory" />

那么,我如何将这些连接并实现到我的网络工作中呢?

代码语言:javascript
复制
protected String doExecute() throws Exception{
    [...]
    pluginSettings.setValue("Key", param);
    [...]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-22 08:31:17

比我想象的要容易。我只需将设置作为WebWork的依赖项注入:

代码语言:javascript
复制
public WebWorkAction(CustomProjectSettings settings){
    this.settings = settings
}

设置-类自动由

代码语言:javascript
复制
<component-import key="pluginSettingsFactory" 
interface="com.atlassian.sal.api.pluginsettings.PluginSettingsFactory" />

并通过添加

代码语言:javascript
复制
<component key="settingsComponent"
      class="com.xxx.CustomProjectSettings">
</component>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30119549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档