javartcjazz

Setting "Discussion" attribute of RTC Work Item


I am trying to set the value of "Discussion" at work item pragmatically.

I managed to set the "Description" attribute but when I tried to set the Discussion I got null pointer exception :

  IWorkItemClient workItemClient= (IWorkItemClient)repository.getClientLibrary(IWorkItemClient.class);
 IWorkItemWorkingCopyManager manager= workItemClient.getWorkItemWorkingCopyManager();
 manager.connect(workItem, IWorkItem.SMALL_PROFILE, SysoutProgressMonitor.getMonitor());
 WorkItemWorkingCopy wc= manager.getWorkingCopy(workItem);

  IProgressMonitor monitor = SysoutProgressMonitor.getMonitor();
  IWorkItemClient service = (IWorkItemClient) repository.getClientLibrary(IWorkItemClient.class);

   IAttribute discussionAttribute = service.findAttribute(projectArea, "discussion", monitor);//Here I got  a null "discussionAttribute"?

   wc.getWorkItem().setValue(discussionAttribute, "New Value for Discussion");

Any ideas!


Solution

  • //Here I got a null "discussionAttribute"?
    Attribute discussionAttribute = service.findAttribute(projectArea, "discussion", monitor);

    I suspect "discussion" isn't a valid WorkItem attribute id.

    Try the question "Where can I find a list of IWorkItem attributes" to query all the attributes of the work item, in order to get the correct attribute name for "discussion" (maybe "comments"?)

    Use IItemManager.fetchCompleteItem to fetch the item for any handle.
    The items carry the actual info; the handles are essentially just like pointers / URLs.

    For example:

    IContributorHandle contributorHandle = ...
    
    IContributor contributor = (IContributor) teamRepository.itemManager.fetchCompleteItem(contributorHandle, IItemManager.DEFAULT, null);  // should really provide a progress monitor in last arg for progress / cancelaton
    
    String name = contributor.getName();
    

    That's for client-side. For server-side, use IRepositoryItemService to fetch the item.


    In the attributes of the project area configuration, I see

    "Comments": ID "com.ibm.team.workitem.attribute.comments", but no "discussion".

    On Jazz.net, you find a link to this discussion and mentions an id named "internalComments".

    Try then:

    Attribute discussionAttribute = 
      service.findAttribute(projectArea, "internalComments", monitor);
    

    Don't forget to save your modified Work Item though, as in "Modify a WorkItem"

    IDetailedStatus s = wc.save(null);
    if (!s.isOK()) {
        throw new TeamRepositoryException("Error saving work item",
                                          s.getException());
    }