`
zhangxu261
  • 浏览: 8877 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

修改Issue默认经办人为报告人

 
阅读更多
 在创建一个Issue的时候,如果不指定经办人,经办人会默认为项目的负责人,如果希望经办人默认为Issue创建时的报告人或者当前登录用户,那该怎么办,因为很少有人会主动在创建issue的时候在经办人那点击分配给我或者分配给真正正确的人,这样我们不得不做一些额外的操作去实现这一要求,最开始的思路是通过监控器监听issue创建事件,然后捕获到该事件之后立即修改该issue的经办人属性,但是事件执行完之后,经办人又被创建时的值覆盖了,接着又试着让修改issue经办人的代码线程休眠几秒后再做执行,依然没有成功。失望之余,我想到了拦截器,jira插件开发书中倒是提到过servlet filter,于是通过代码试验,终于用filter方式实现了修改默认经办人的功能
首先需要在atlassian-plugin.xml文件中配置一个filter
<servlet-filter key="user-assign-filter" class="com.company.jira.filter.UserAssignFilter" location="before-dispatch" weight="200">
    <description>用户指派过滤器</description>
    <url-pattern>/secure/QuickCreateIssue.jspa*</url-pattern>
</servlet-filter>
 通过Firefox的firebug工具捕获到了/secure/QuickCreateIssue.jspa*的请求


 
在创建issue的时候如果没有设置经办人,那么经办人的值为-1,当然在issue的创建的后台会被置成项目的负责人,所以思路有了,就是要在过滤器这里修改掉assignee的值
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    String assignee = servletRequest.getParameter("assignee");
    String reporter = servletRequest.getParameter("reporter");
    if ("-1".equals(assignee)) {    //-1代表默认值
        HashMap map = new HashMap(servletRequest.getParameterMap());
        map.put("assignee", new String[]{reporter});
        ParameterRequestWrapper wrapRequest = new ParameterRequestWrapper((HttpServletRequest) servletRequest, map);
        filterChain.doFilter(wrapRequest, servletResponse);
    } else {
        filterChain.doFilter(servletRequest, servletResponse);
    }
}
 由于servletRequest.getParameterMap()这个map中的值无法修改,只好通过自定义一个ParameterRequestWrapper对象来解决
public class ParameterRequestWrapper extends HttpServletRequestWrapper {

    private Map params;

    public ParameterRequestWrapper(HttpServletRequest request, Map newParams) {
        super(request);
        this.params = newParams;
    }

    public Map getParameterMap() {
        return params;
    }

    public Enumeration getParameterNames() {
        Vector v = new Vector(params.keySet());
        return v.elements();
    }

    public String[] getParameterValues(String name) {
        Object v = params.get(name);
        if (v == null) {
            return null;
        } else if (v instanceof String[]) {
            return (String[]) v;
        } else if (v instanceof String) {
            return new String[]{(String) v};
        } else {
            return new String[]{v.toString()};
        }
    }

    public String getParameter(String name) {
        Object v = params.get(name);
        if (v == null) {
            return null;
        } else if (v instanceof String[]) {
            String[] strArr = (String[]) v;
            if (strArr.length > 0) {
                return strArr[0];
            } else {
                return null;
            }
        } else if (v instanceof String) {
            return (String) v;
        } else {
            return v.toString();
        }
    }
}
 
  • 大小: 51.5 KB
分享到:
评论

相关推荐

    c#windows修改音频默认设备

    本项目标题为"**C# Windows修改音频默认设备**",其主要目的是通过C#编程语言实现自动获取并设置Windows系统的音频输入输出设备为指定的设备。这一功能在多设备环境中尤为实用,例如在会议室、家庭娱乐系统或个人多...

    IssueTracker Issue Tracker 问题跟踪系统

    IssueTracker Issue Tracker 问题跟踪系统, Issue-Tracker is a support issue tracking system written in asp.net 2.0 , with MSSQL backend. The system is designed to be user friendly,simpley use Issue-...

    redmine使用jmeter批量创建issue

    JMeter,全称为Apache JMeter,是一款功能强大的性能测试工具,通常用于测试Web应用的负载和压力。它可以模拟多个用户并发执行操作,因此在本场景中,我们可以利用JMeter来批量创建Redmine中的Issue。 首先,我们要...

    gitlab issue详细操作流程

    Issue 可以视为一个待完成的任务或需求,它不仅涵盖了软件缺陷修复,还包括新功能实现、文档完善等多种类型的项目管理工作。 #### Issue 示例 - **软件缺陷**:例如用户反馈某个功能在特定条件下会崩溃。 - **功能...

    c++ issue c++ issue

    标题和描述中的“c++ issue”可能指的是开发者在编写或运行C++程序时遇到的问题。这类问题可能涉及到语法错误、编译错误、运行时错误、内存管理、多线程同步、模板元编程等复杂领域。 首先,让我们详细了解一下C++...

    issue-reporter-android,.zip

    "issue-reporter-android"是一个专为Android应用程序设计的开源项目,它允许用户在遇到应用错误或异常时,方便地报告问题,从而帮助开发者快速定位并修复问题。本文将深入探讨这个项目的功能、使用方法以及它如何...

    TR-114 Issue: 3 Amendment 4

    特别重要的是,报告不授予任何再许可权、修改权或基于报告创建衍生作品的权利,除非报告包含可以实现为计算机代码的文本,在这种情况下,用户有权修改和创建代码的衍生作品。报告明确规定,实现该技术报告的产品不被...

    GR-63-CORE ISSUE 3

    GR-63-CORE Issue 3不仅为网络设备制造商提供了详细的物理保护标准,还为整个通信行业的发展提供了指导方向。通过对本文件的学习与应用,可以有效提升网络设备的安全性和稳定性,从而更好地服务于社会和用户。 通过...

    GRE issue所有提纲

    **GRE Issue写作提纲详解** GRE(Graduate Record Examination)是全球广为接受的研究生入学考试,其中的Issue部分是一项重要的考察项目,旨在测试考生的批判性思维和书面表达能力。Issue部分要求考生就给定的议题...

    ETS官方Issue范文

    【ETS官方Issue范文】主要探讨了科技进步与人类社会的关系,特别是技术发展如何导致现代文明中的孤独感日益增强。这个问题在当今社会中具有重要的讨论价值,因为它触及到我们生活的方方面面,包括工作、社交和个人...

    基于gitissue的轻量级个人博客模板

    GitIssue,通常用于项目管理和问题追踪,但在这种场景下,它被巧妙地转化为一个内容创作平台。这个模板名为"gitblog",旨在为用户提供一个简单、轻便的解决方案,特别适合那些希望通过GitHub Pages展示自己作品和...

    S1000D Issue 5.0.7z

    S1000D的核心理念是将复杂的技术信息分解为独立的数据模块(Data Modules, DM),这些模块可以独立创建、修改和重用,降低了信息管理的复杂性。在描述中提到的“DM”和“PM”分别代表“技术数据模块”(Technical ...

    S1000D Issue 5.0.zip

    "S1000D Issue 5.0 Default BREX.zip"包含了默认的BREX配置,这有助于确保不同组织间的一致性和兼容性。 4. **单一源信息(SSI)与结构化自然语言(SNS)** SSI是S1000D中的一种方法,通过它,同一份信息可以以...

    Issue Tracker Starter Kit 简体中文版

    因公司需要一个小巧易用的项目问题管理工具来跟踪公司网站的修改,于是想到 ASP.NET Issue Tracker Starter Kit 并将其中文化并修正了在使用 Access 数据库时保存和执行查询的一些问题。希望你喜欢。 &lt;br&gt;运行 ...

    王老师Issue解析加题库各题目大纲和范文1

    【Issue写作解析与提升策略】 Issue写作是GRE考试的一个重要部分,主要测试考生的批判性思维和书面表达能力。...通过不断练习和反思,考生可以逐步提高Issue写作的水平,为GRE考试取得理想成绩奠定基础。

    自己整理的gre issue的最新素材

    到现在为止有用的issue最新素材,包括老虎伍兹,朝核问题等等

    PHP issue

    标题“PHP issue”提示我们关注的是PHP编程语言中遇到的问题。描述中提到“PHP original documents, just apply for solve problem”,这表明可能有编程错误或不理解的PHP概念,需要通过官方文档来查找解决方法。...

    如何修改用户登陆linux的提示信息.doc

    - **Telnet登录**:如果想要修改telnet登录时的提示信息,除了上面提到的`/etc/issue.net`文件之外,还可以修改`/etc/rc.d/rc.local`文件。在这个文件中,可以注释掉某些行,并添加自定义信息。 ```bash # vi /...

    ENA-EREC-G98-Issue-1-Amendment-6-(2021)英国G98中文翻译.pdf

    ENA_EREC_G98_Issue_1_Amendment_6_(2021)英国G98中文翻译。Engineering Recommendation G98 Issue 1 Amendment 6 September 2021:Requirements for the connection of Fully Type Tested Micro-generators (up to ...

    GRE Issue 主体逻辑归类总结 莎莎1

    GRE Issue 题目主要考察的是考生的逻辑分析和论证能力。在GRE写作中,Issue题目通常会提出一个争议性的观点,要求考生进行论述。针对标题"GRE Issue 主体逻辑归类总结 莎莎1",我们可以看到路莎老师的教学方法是将...

Global site tag (gtag.js) - Google Analytics