首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >changeLog.internalDelegator [GenericEntity.get] "internalDelegator“不是ChangeGroup的一个字段

changeLog.internalDelegator [GenericEntity.get] "internalDelegator“不是ChangeGroup的一个字段
EN

Stack Overflow用户
提问于 2022-08-11 15:07:16
回答 1查看 37关注 0票数 0

我正在用Jira编写一些脚本监听器代码,以便在更新类型障碍问题时触发,下面是我的代码:

代码语言:javascript
运行
复制
    import com.atlassian.event.Event
import java.util.HashMap;
import java.util.List;

import org.apache.log4j.Logger;
import org.ofbiz.core.entity.GenericValue;
import org.ofbiz.core.entity.GenericEntity;

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.event.issue.AbstractIssueEventListener;
import com.atlassian.jira.event.issue.IssueEvent;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;
import com.atlassian.jira.issue.util.IssueChangeHolder;
import org.apache.log4j.Logger
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.component.ComponentAccessor
import java.util.HashMap;
import java.util.List;
import org.apache.log4j.Logger;
import org.ofbiz.core.entity.GenericValue;

def log = Logger.getLogger("atlassian-jira.log")
log.warn("Start Auto Defaults Listener");
log.warn("IssueMounaEvent = " + event); 
Issue issue = event.getIssue();
log.warn("IssueMouna = " + issue);

if (issue.getIssueType().getName().equalsIgnoreCase("Impediment")) 
{
log.warn("Analyzing IMPEDIMENT changelog Mouna ...");
event2= (IssueEvent) event; 
def warning = analyzeImpedimentChangeLog(event2);

}




def analyzeImpedimentChangeLog(IssueEvent event) {
def warning = "";
log.warn("IMPEDIMENT STATUS ")
List<GenericValue> changeItems = null;
def impedimentStatus = event.getIssue().getStatus().getName();
log.warn("IMPEDIMENT STATUS "+impedimentStatus)
if (!"New".equalsIgnoreCase(impedimentStatus) && !"Inspecting".equalsIgnoreCase(impedimentStatus)) {

GenericValue changeLog = event.getChangeLog();
log.warn("HERE 1")

HashMap<String, Object> fields = new HashMap<String,Object>();
log.warn("HERE 2")

fields.put("group", changeLog.get("id"));
log.warn("HERE 3")

String author = changeLog.getString("author");
log.warn("HERE 4")
try{

log.warn("CHANGE LOG: "+changeLog.internalDelegator)

changeItems = changeLog.internalDelegator.findByAnd("ChangeItem", fields); 
log.warn("HERE 5")
}catch(Exception e){
log.warn("EXCEPTIONMOUNA "+e)
}

}

return warning;
} 

我收到以下错误,这有点奇怪,因为这以前是用Java实现的,而且运行良好:

代码语言:javascript
运行
复制
2022-08-11 EXCEPTIONMOUNA java.lang.IllegalArgumentException: [GenericEntity.get] "internalDelegator" is not a field of ChangeGroup

我想执行以下代码:

代码语言:javascript
运行
复制
changeItems = changeLog.internalDelegator.findByAnd("ChangeItem", fields); 

在将以下代码行写入日志时,我会收到上面的异常:

代码语言:javascript
运行
复制
log.warn("CHANGE LOG: "+changeLog.internalDelegator)

这段代码以前是作为Java插件实现的,并以这种方式工作得很好。在这种情况下,要使这个语句适应ScriptRunner中的groovy,需要做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-15 00:03:21

我找到了一种访问日志的方法,这个:

代码语言:javascript
运行
复制
import com.atlassian.event.Event
import java.util.HashMap;
import java.util.List;
import org.apache.log4j.Logger;
import org.ofbiz.core.entity.GenericValue;
import org.ofbiz.core.entity.GenericEntity; 
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.event.issue.AbstractIssueEventListener;
import com.atlassian.jira.event.issue.IssueEvent;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;
import com.atlassian.jira.issue.util.IssueChangeHolder;
import org.apache.log4j.Logger
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.component.ComponentAccessor
import java.util.HashMap;
import java.util.List;
import org.apache.log4j.Logger;
import org.ofbiz.core.entity.GenericValue;
import org.ofbiz.core.entity.GenericDelegator; 
import com.atlassian.jira.issue.changehistory.ChangeHistoryManager;
import com.atlassian.jira.issue.history.ChangeItemBean;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.comments.Comment
import com.atlassian.jira.workflow.JiraWorkflow
import com.atlassian.jira.workflow.WorkflowManager
import org.apache.log4j.Logger
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.changehistory.ChangeHistoryItem
def log = Logger.getLogger("atlassian-jira.log")
log.warn("Start Auto Defaults Listener");
log.warn("IssueMounaEvent = " + event); 
Issue issue = event.getIssue();
log.warn("IssueMouna = " + issue);

            if (issue.getIssueType().getName().equalsIgnoreCase("Impediment")) 
            {
                log.warn("Analyzing IMPEDIMENT changelog Mouna ...");
                event2= (IssueEvent) event; 
                def warning = analyzeImpedimentChangeLog(event2);
                if (!warning.isEmpty()) {
                    log.warn("Set IMPEDIMENT warning tooo Mouna " + warning);
                    setWarning(issue, warning);
                }
                else {
                    log.warn("No IMPEDIMENT warning");
                }
            }
            
    


def analyzeImpedimentChangeLog(IssueEvent event) {
            String warning = "";
            log.warn("IMPEDIMENT STATUS ")
            //List<GenericValue> changeItems = null;
            def impedimentStatus = event.getIssue().getStatus().getName();
            // status New and Inspecting are out of scope
            log.warn("IMPEDIMENT STATUS "+impedimentStatus)
            if (!"New".equalsIgnoreCase(impedimentStatus) && !"Inspecting".equalsIgnoreCase(impedimentStatus)) {

                GenericValue changeLog = event.getChangeLog();
                log.warn("HERE 1")

                HashMap<String, Object> fields = new HashMap<String,Object>();
                log.warn("HERE 2")

                fields.put("group", changeLog.get("id"));
                log.warn("HERE 3")

                String author = changeLog.getString("author");
                log.warn("HERE 4")
                
                //changeItems = changeLog.internalDelegator.findByAnd("ChangeItem", fields);
                
                log.warn("CHANGE LOG: "+changeLog.get("issue"))
                List<GenericValue> changeItems = ComponentAccessor.getChangeHistoryManager().getAllChangeItems(issue)

              //  changeItems = changeLog.internalDelegator.findByAnd("ChangeItem", fields); 
                //changeItems = changeLog
                log.warn("HERE 5::: "+ changeItems)
                log.warn("MOUNA IS HERE AFTER HERE 5 " +changeItems.size());
                log.warn("VALUES 1");

            int lastIndex= changeItems.size()-1; 
            log.warn("MOUNA IS HERE AFTER HERE 5 " +changeItems.size()+ " "+changeItems.get(lastIndex));

            ChangeHistoryItem value= changeItems.get(lastIndex) as ChangeHistoryItem; 
            log.warn("GENERIC VALUE "+ value.getField());

            String modifiedField=value.getField(); 

            if(modifiedField.equals("Source Type") ||modifiedField.equals("Class")||
            modifiedField.equals("Planning Required")){


            log.warn("MOUNA SIZE");
            def ChangeHistoryManager= ComponentAccessor.getChangeHistoryManager();

            List<ChangeItemBean> fieldchangeItems = ChangeHistoryManager.getChangeItemsForField(issue, modifiedField)
            if (fieldchangeItems.size()>0) {
            log.warn("MOUNA FIRST "+ modifiedField);

            //String content = transientVars['Source Type'] as String
            
            def customFieldManager = ComponentAccessor.getCustomFieldManager()
            def newStringCf = customFieldManager.getCustomFieldObjectByName(modifiedField)
            String newString = issue.getCustomFieldValue(newStringCf) as String

            log.warn("MOUNA FIRST "+ newString);

            //def val=cfValues['Source Type']?.value 

            //log.warn(sourceType+" MOUNA FIRST "+sourceTypechangeItems.get(sourceTypechangeItems.size()-1).getFromString());
             String oldString = fieldchangeItems.get(fieldchangeItems.size()-1).getFromString(); 
             warning = "Field \"" + modifiedField + "\" has been changed from \"" + oldString + "\" to \"" + newString + "\" by \"" + author + "\"";
            log.warn("MOUNA FIRST "+warning);


}

            }
                changeItems.eachWithIndex { item, index ->
                    log.warn("ITEM MOUNA "+item);
                    


                
                }
                            
            
            }
        log.warn("changeitemlog== "+warning);

        return warning;
    }

    void setWarning(Issue mutableIssue, String warning)
    {
            log.warn("WARNING FUNC "+warning)

             Warning = 13593
            CustomField customField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(new Long(13593));
            IssueChangeHolder issueChangeHolder = new DefaultIssueChangeHolder();
            customField.updateValue(null, mutableIssue, new ModifiedValue(mutableIssue.getCustomFieldValue(customField), warning), issueChangeHolder);
    
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73322985

复制
相关文章

相似问题

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