Error getting Contributor of an approval record
I opened this as a PMR but was told that PMR support does not include the Java APIs (which I really find hard to believe).
I have 2 Java programs using the java 4.0.0.1 client. One programmatically adds an approval record of type Verification and adds an approver, and one that generates reports that reads that information. I am getting an exception randomly on the fetchCompleteState() call java.lang.IllegalArgumentException: itemHandle must not be null and must not have a null state id at com.ibm.team.repository.client.internal.ItemManager.fetchCompleteState(ItemManager.java:1014) The ContributorHandle that I am attempting to fetch is: com.ibm.team.repository.common.model.impl.ContributorHandleImpl@a330a33 (stateId: <unset>, itemId: [UUID _YVcmYL87Ed2iU6ePvw_uCw], origin: com.ibm.team.repository.client.internal.TeamRepository@5f775f77, immutable:true) I can see that the stateId: is <unset> but I do not know why. If I look at the work item that I am getting this on in the 4001 RTC Eclipse client, I see the Verification record and the approver (her name is listed) with a state of Pending. I can also view her profile in the client and there is no error. The approval record is added programmatically using this method: private void addWASVerificationApproval(IWorkItem wasWorkItem) { IApprovals approvals = wasWorkItem.getApprovals(); List<IApprovalDescriptor> adList = approvals.getDescriptors(); String suffix = adList.isEmpty() ? "" : " " + (adList.size() + 1); IApprovalDescriptor descriptor = approvals.createDescriptor(WorkItemApprovals.VERIFICATION_TYPE.getIdentifier(), "Verification - created by Bridge" + suffix); // Create the approval approvals.add(descriptor); approvals.add(approvals.createApproval(descriptor, wasWorkItem.getCreator())); } You can see I pass in the work item "getCreator()" value, which should (I would think) never be invalid. Please assist in determining how to resolve this issue. |
Accepted answer
there are lots of places in the product code that checks to see if there is a fullstate available (hasFulLState()) before doing the fetchfullState.
I assume they would get an exception just like you. let me look for an example. Susan Hanson selected this answer as the correct answer
Comments
sam detweiler
commented Mar 05 '14, 9:22 p.m.
I looked at my approval injector.. I never load the contributor record.. just use the handles.
sam detweiler
commented Mar 05 '14, 9:31 p.m.
I think an object without a fullstate could be injected by the importer indirectly..
1
sam detweiler
commented Mar 05 '14, 9:35 p.m.
If you put a try/catch around this and use the auditable service (client) to load the contributor instead of the item manager does this resolve the problem?
|
2 other answers
Ralph Schoon (63.6k●3●36●46)
| answered Mar 06 '14, 3:12 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
The code that creates the data is not very helpful. The code that actually fails would be more interesting.
I agree with Sam and would suggest to wrap the code with a try/catch. That way you can find out the source work item and try to figure out what goes wrong. Without looking at the code that provides the data and fails, I can't say more. |
Your answer
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.