how to add an advisor on stream custom attribute modifications?
![]()
Hello,
I am trying to code an operation advisor to detect modifications of custom attribute on a stream, in order to validate the custom property values and prevent saving the stream if invalid or forbidden values are added.
I have currently written the following advisor:
public class EIModifyStreamAdvisor extends AbstractService implements IOperationAdvisor { private static final Log LOGGER = LogFactory.getLog(EIModifyStreamAdvisor.class); private static final String PROBLEM_TYPE = "ei.rtcext.build.service.advisors.eiModifyStreamAdvisor"; @Override public void run(final AdvisableOperation operation, final IProcessConfigurationElement advisorConfiguration, final IAdvisorInfoCollector collector, final IProgressMonitor monitor) throws TeamRepositoryException { // (...) test property (...) collector.addInfo( collector.createProblemInfo("Property must not be modified", "Property '" + propertyName + "' must not be changed manually", PROBLEM_TYPE)); } } registered this advisor through the extension point: <extension point="com.ibm.team.process.service.operationAdvisors"> <operationAdvisor class="ei.rtcext.build.service.advisors.EIModifyStreamAdvisor" id="ei.rtcext.build.service.advisors.eiModifyStreamAdvisor" name="[EI]Validate Modified Properties On Stream" operationId="com.ibm.team.scm.server.modifyStream"> <description> [EI]Prevent stream save when properties have been wrongly modified. </description> <extensionService componentId="ei.rtcext.build" implementationClass="ei.rtcext.build.service.advisors.EIModifyStreamAdvisor"> <prerequisites> <requiredService interface="com.ibm.team.scm.common.IScmService"/> </prerequisites> </extensionService> </operationAdvisor> </extension>
and added it to my process:
<operation final="true" id="com.ibm.team.scm.server.modifyStream">
My advisor is called when modifying the stream name or description for example, but not when adding or changing a custom property.
I looked in com.ibm.team.scm.service.internal.ScmService#setWorkspaceCustomAttributes, and it seems to me that RTC directly modifies the custom attributes on the stream in a transaction without first calling preconditions or advisors.
Version: RTC 6.0.6.1
|
Comments
If you don't get a response on the forum, I'd suggest filing a defect with IBM support.
it is absolutely possible that this is the case. If you need such kind of capabilities, I would suggest to create an enhancement.