It's all about the answers!

Ask a question

AssertionFailedException problem with getting the values of attributes


0
1
Robert Siara (82914) | asked Nov 23 '12, 4:34 p.m.
edited Nov 23 '12, 6:56 p.m.
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



permanent link
Arjun Pande (3513) | answered Sep 15 '13, 11:49 p.m.

Still it is showing an error as an Invalid reference when I am using workItem.getValue.

Can you please give me an alternate solution?


permanent link
Arjun Pande (3513) | answered Sep 16 '13, 1:15 a.m.

It is still showing an error like Invalid reference

can you help me with an alternative solution.


permanent link
Joao Bosco Jares A. Chaves (324813) | answered Sep 16 '13, 10:36 a.m.
 Very useful for me. Thanks @sam

permanent link
Neha Lourenco (112) | answered Dec 01 '16, 5:56 a.m.
 What are the jars and libraries required to be included into the build path (in eclipse) to execute this code?

Comments
sam detweiler commented Dec 01 '16, 7:20 a.m. | edited Dec 01 '16, 7:23 a.m.

i execute this from Eclipse and have set up user 'libraries' for the PlainJava jar files

if you then build an executable jar, you can include the needed jars inside, or you can point to the folder where all the plainjava jars reside

there are so many, I don't know exactly which ones you can leave out.


permanent link
Param S (276) | answered Feb 26 '21, 12:32 a.m.

 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.

Your answer


Register or to post your answer.