how to create RTC source control deliver client precondition
Hi Ralph,
I am developing a plugin , a precondition for Deliver Client under Source Control to run a static analysis tool while delivering a changeset.
I created a java file with below code to trigger a message when i deliver a changeset, I deplyoed the plugin under server side site folder and ini file under provision files and I am able to see the precondition under Deliver Client
I added a precondition and while delivering the changset, my plugin show under Team adivisor but it shows as my plugin name with [not installed] beside plugin like "StaticAnalysis[not installed]"
I should install the developed jar file somewhere else also?
My code is as below
public class StaticAnalysisAdvisor implements IOperationAdvisor
{
/
@see com.ibm.team.process.common.advice.runtime.IOperationAdvisor#run(com.ibm.team.process.common.advice.AdvisableOperation, com.ibm.team.process.common.IProcessConfigurationElement, com.ibm.team.process.common.advice.IAdvisorInfoCollector, org.eclipse.core.runtime.IProgressMonitor)
*/
public void run(AdvisableOperation operation, IProcessConfigurationElement advisorConfiguration, IAdvisorInfoCollector collector, IProgressMonitor monitor) throws TeamRepositoryException {
Object opData = operation.getOperationData();
if (!(opData instanceof DeliverOperationData)) {
IReportInfo info = createProblem("static", "nodelviered", collector);
collector.addInfo(info);
return;
}
DeliverOperationData data = (DeliverOperationData) opData;
monitor.beginTask("", 1000); //$NON-NLS-1$
try {
IProcessArea processArea = operation.getProcessArea();
IProjectAreaHandle projectArea = processArea.getProjectArea();
if (data.getChangeSetHandles().size() > 0 || ( data.getAtomicUpdateParm() != null)) {
IReportInfo info = createProblem("static1", "nodelviered1", collector);
collector.addInfo(info);
addProblems(data, processArea, projectArea, collector, new SubProgressMonitor(monitor, 600));
}
IReportInfo info = createProblem("static1", "nodelviered1", collector);
collector.addInfo(info);
} catch (TeamRepositoryException e) {
collector.addInfo(collector.createExceptionInfo("", e)); //$NON-NLS-1$
} finally {
monitor.done();
}
}
private IAdvisorInfo createProblem(String summary, String description, IAdvisorInfoCollector collector) throws TeamRepositoryException {
IAdvisorInfo problem = collector.createProblemInfo(summary, description,"static");
problem.setProblemObject(description);
problem.setData(summary);
return problem;
}
private void addProblems(DeliverOperationData data, IProcessArea processArea, final IProjectAreaHandle projectArea, IAdvisorInfoCollector collector, IProgressMonitor monitor) throws TeamRepositoryException {
if( data.getChangeSetHandles().size() == 0 )
{
monitor.beginTask("", 1000); //$NON-NLS-1$
}
else
{
monitor.beginTask("", 1000 * data.getChangeSetHandles().size() + 1); //$NON-NLS-1$
}
List<IChangeSetHandle> changeSetHandles = data.getChangeSetHandles();
for (Iterator changesIterator = changeSetHandles.iterator(); changesIterator.hasNext();)
{
IChangeSet changeset = (IChangeSet) changesIterator.next();
List changes = changeset.changes();
for (Iterator changes1 = changes.iterator(); changesIterator.hasNext();)
{
IChange change = (IChange)changes1.next();
// file path, starting from the component root
String elementPath = "";
String s = data.getDestWorkspace().toString();
String s1 =changeset.getComponent().toString();
elementPath = s + s1;
IReportInfo info = createProblem("static2", elementPath, collector);
collector.addInfo(info);
}
}
}
}
Please help me to resolve this issue
let me know if you need any more details
Regards,
Shruthi
One answer
Here is an example of a working precondition for source control deliver.
Get that working on Jetty first.
Based on that, get you own extension working.
The deployment is explained in the Extensions workshop. For a final deployment, carefully read the last lab. I updated the 6.0.3 version with a lot more details.