AssertionFailedException problem with getting the values of attributes
I have a problem with getting the values of attributes (built in and custom).
I use this code to get the built-in attributes and their values. List<IAttributeHandle> builtInAttributeHandles = service.findBuiltInAttributes(projectArea, monitor); IFetchResult builtIn = repository.itemManager().fetchCompleteItemsPermissionAware(builtInAttributeHandles,IItemManager.REFRESH, monitor); for (Iterator it = builtIn.getRetrievedItems().iterator(); it.hasNext();) { com.ibm.team.workitem.common.model.IAttributeHandle handle = (IAttributeHandle) it.next(); com.ibm.team.workitem.common.model.IAttribute attribute = (IAttribute) repository.itemManager().fetchCompleteItem(handle, IItemManager.DEFAULT,new NullProgressMonitor()); System.out.println(" Built In Attribute: "+ attribute.getDisplayName()); System.out.println(" Type: " + attribute.getAttributeType()); try { System.out.println(" Value "+ resolved.getItem().getValue(attribute)); } catch (AssertionFailedException e) { System.out.println(e.toString()); } } But i always get AssertionFailedException ( i know that i need use different method for enumeration but even for other atributtes i get this exception) This code I use for enumeration (borrowed from this forum) System.out.println(" type"+"="+attribute.getAttributeType()); System.out.println(" value"+"="+item.getValue(attribute)); IEnumeration<ILiteral> enumeration = (IEnumeration<ILiteral>)workItemClient.resolveEnumeration(attribute, null); IAuditableClient iac = (IAuditableClient) repository.getClientLibrary(IAuditableClient.class); if(enumeration!=null){ IAuditableClient auditableClient = (IAuditableClient )repository.getClientLibrary(IAuditableClient.class); String[] iaval = attribute.getValue(auditableClient, item, null).toString().split(":"); if(iaval.length>1 && iaval[1]!=null){ List<ILiteral> enumerationLiterals = enumeration.getEnumerationLiterals(); for (ILiteral literal : enumerationLiterals){ if(literal.getIdentifier2().getStringIdentifier().equalsIgnoreCase(iaval[1])){ System.out.println("attribute name="+attribute.getIdentifier() +", type"+"="+attribute.getAttributeType()+" literal="+literal.getIdentifier2().getStringIdentifier()+" literal name="+literal.getName()); break; } } } }I will be very grateful for help edit: Also i have problem with format code in this post, I do not know that anyone will want to read it :/ |
Accepted answer
14 other answers
Perhaps we can get values to built in and custom attributes using RPT. The workitems can fetched faster. It supports selection and filtering fields and values. It's supports pagination as well so we can use threads to get data in bunches concurrently. |
|
It is still showing an error like Invalid reference can you help me with an alternative solution. |
Still it is showing an error as an Invalid reference when I am using workItem.getValue. Can you please give me an alternate solution? |
|
When I am making changes to the custom attributes it is giving me an error like this: Changes made in the template body: Actual Start Date: ${workItem.get("com.acn.adt2.workitem.attribute.actualstartdate")}
where id of the custom attributes is com.acn.adt2.workitem.attribute.actualstartdate. Error: Method Invocation Exception: Method get() threw AssertionFailedException: assertion failed: |
|
I use Your function only for custom atributtes , therefore, this condition does not help.
Please look at my code. |
thanks for the fix for the deprecated call.
my printAttributes can handle just custom if you add a check for if (workItem.hasAttribute(ia)) && !ia.isBuiltin()) I have not used the getCustomAttributes() method cause I choose to loop thru all |
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.