How do I access the build properties programmatically?
![]()
The program that I am writing uses the RTC Plain Java API for 4.x.
I have gone over several forum posts that talk about accessing build definition properties. But none for a build result or a build request. When I bring up a build result, I see a lot of build properties, some left unchanged, some modified etc. How do I "get" these properties as I can in the case of a build definition? Essentially, how do I get the properties that a particular build instance actually used (which may be different from the ones defined as default in its build definition)? Thanks. |
One answer
![]()
Ok. So I got the answer from this response by Nick Edgar:
https://jazz.net/forum/questions/23094/retrieve-properties-from-a-build-request Only thing to note is that the getProperties returns a List and not a Map (for this particular case). Not sure why. A list of IBuildProperty objects. So given a UUID string for an IBuildResult, here is what I do to get the properties that this particular build used: UUID uuidObj = UUID.valueOf(str); bldResultH = (IBuildResultHandle) IBuildResult.ITEM_TYPE.createItemHandle(uuidObj, null); bldResult = (IBuildResult) repo.itemManager().fetchCompleteItem(bldResultH, IItemManager.DEFAULT, null); List<IBuildRequestHandle> bReqHList = (List<IBuildRequestHandle>) bldResult.getBuildRequests(); for (IBuildRequestHandle brh : bReqHList) { bReq = (IBuildRequest) repo.itemManager().fetchCompleteItem(brh, IItemManager.DEFAULT, null); IBuildDefinitionInstance bdefIns = bReq.getBuildDefinitionInstance(); System.out.println("Properties for this instance: " + bdefIns.getProperties()); for (final Iterator<IBuildProperty> i = (bdefIns.getProperties()).iterator(); i.hasNext();) { IBuildProperty bldProp = (IBuildProperty) i.next(); System.out.println(bldProp.getName() + "---------" + bldProp.getValue()); } Hopefully the above will help somebody out. I am not yet sure why the API has getBuildRequests and not just getBuildRequest. Isn't there a 1:1 relationship between a build and its build request? |
Comments
IBuildResult is another object. just like IBuildDefinition
you can search and find Build Results just like you do for Build Definitions.
IBuildResult->IBuildRequest->IBuildDefinition& Properties and ->IBuildEngine used & properties.
Build Def properties override build Engine properties of the same name.
I am not sure I understand the response above.
Yes, I understand that IBuildResult is an object just like any other.
From a build result object:
--one can get its build definition object and thus build definition properties
--one can also get the build engine and build engine properties
I understand all that and have done all that.
What I need is this:
--when I request a build (request build UI), I can change the values of properties under the "Build Properties" drop-down. I can remove/add properties. These changes are only for a "particular" instance, i.e. a build, not for the entire build definition. How do I get these properties "specific" to a build?
As you say, build definition properties override build engine properties of the same name.
In the case I have outlined above, I am overriding even build definition properties and could be adding/removing some on top of that. How do I "get" them?
Essentially, I need to "get" the properties and the corresponding values specific to a build result not of its build definition?
Thanks.