<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一條老狗

               老狗拉破車
    posts - 12, comments - 11, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    JIRA插件開發(fā)(二) [原創(chuàng)]

    Posted on 2007-10-24 11:40 一條老狗 閱讀(2148) 評論(0)  編輯  收藏 所屬分類: Java

    JIRA插件開發(fā)的工作本早已結(jié)束。
    但近日有個朋友來問,如何在IssueNavigator顯示時,顯示用戶的帳號名(username),而不是其FullName。

    當時我為他提供了兩種思路:

    思路1。寫一個自定義字段插件,這個插件就是按用戶名來顯示報告者及被分派者。
    然后再自定義問題導(dǎo)航欄,把你的自定義字段添加進去即可。

    思路2。繼承并覆蓋問題導(dǎo)航功能的Action,直接修改其顯示的數(shù)據(jù)。

    這個問題挺有意思,今日閑來無事,對第二種思路寫了點代碼來實現(xiàn)一下。

    首先我們繼承IssueNavigator類:

    public class IssueNavigator extends com.atlassian.jira.web.action.issue.IssueNavigator {

        
    private boolean convertedResults = false;
        
    public SearchResults getSearchResults() throws SearchException {
            SearchResults results 
    = super.getSearchResults();
            
    if (!convertedResults && results != null{
                convertedResults 
    = true;

                List issueList 
    = results.getIssues();
                
    for (int i = 0; i < issueList.size(); i++{
                    com.atlassian.jira.issue.DocumentIssueImpl issue 
    =
                            (com.atlassian.jira.issue.DocumentIssueImpl)issueList.get(i);

                    Document document 
    = null;
                    
    try {
                        Field f 
    = issue.getClass().getDeclaredField("document");
                        f.setAccessible(
    true);
                        document 
    = (Document)f.get(issue);
                        f.setAccessible(
    false);
                    }
     catch (NoSuchFieldException e) {
                        e.printStackTrace();
                    }
     catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }


                    DocumentIssueImpl newIssue 
    = new DocumentIssueImpl(
                            document,
                            ComponentManager.getInstance().getConstantsManager(),
                            ComponentManager.getInstance().getFieldManager(),
                            ComponentManager.getInstance().getIssueManager(),
                            ComponentManager.getInstance().getIssueFactory(),
                            ComponentManager.getInstance().getAttachmentManager(),
                            ComponentManager.getInstance().getProjectFactory()
                    );

                    issueList.set(i, newIssue); 
                }

            }


            
    return results;
        }


    }

    然后覆蓋其 getSearchResults() 方法,將issueList中的對象換為我們的新對象(DocumentIssueImpl)。
    注意: 這里面為了取回document對象,使有了反射。或許有其它辦法,這里只做一個測試,不考慮其它問題。

    為此,我們需要再繼承一個類 DocumentIssueImpl:
    public class DocumentIssueImpl extends com.atlassian.jira.issue.DocumentIssueImpl {

        
    private User resetUserFullName(User user) {
            user.setFullName(user.getName());
            
    return user;
        }


        
    public User getAssignee()
        
    {
            
    return resetUserFullName(super.getAssignee());
        }


        
    public User getReporter()
        
    {
            
    return resetUserFullName(super.getReporter());
        }

    }

    然后我們覆蓋其 getAssignee() getReporter() 方法,把username賦值給fullname
    這樣當調(diào)用 getFullName 時返回的就是 username了。

    然后插件配置文件中覆蓋IssueNavigation Action

    <action name="xxx.IssueNavigator" alias="IssueNavigator">
        
    <view name="success">/secure/views/navigator/navigator.jsp</view>
        
    <view name="error">/secure/views/navigator/navigator.jsp</view>
    </action>

    完成!

    主站蜘蛛池模板: 日韩一级免费视频| 亚洲国产精品无码久久一区二区| 国产亚洲精品免费| 亚洲午夜在线一区| 一区免费在线观看| 成人激情免费视频| 亚洲最新视频在线观看| 又硬又粗又长又爽免费看| 青青草原精品国产亚洲av| 在线观看亚洲免费| 无码一区二区三区免费| 免费**毛片在线播放直播| 亚洲Aⅴ在线无码播放毛片一线天| 国产精品成人免费一区二区| 亚洲国产日产无码精品| vvvv99日韩精品亚洲| 亚洲精品自偷自拍无码| 久久WWW色情成人免费观看| 国产成人高清精品免费观看| 亚洲毛片不卡av在线播放一区| 亚洲AV无码国产剧情| 亚洲成A人片在线观看无码不卡| 午夜精品在线免费观看| 激情小说亚洲图片| 亚洲国产中文v高清在线观看| 亚洲成年人免费网站| 亚洲冬月枫中文字幕在线看| 国产精品亚洲αv天堂无码| 久久久久久av无码免费看大片| 亚洲综合久久夜AV | 男男AV纯肉无码免费播放无码| 国内少妇偷人精品视频免费| 亚洲国产三级在线观看| 香港a毛片免费观看 | 日本免费网址大全在线观看| 亚洲精品一卡2卡3卡三卡四卡| 国产国产人免费视频成69堂| 亚洲午夜无码久久久久软件| 又粗又黄又猛又爽大片免费| 国产一精品一AV一免费孕妇| 最近最新高清免费中文字幕|