Skip to content

Commit 2a265d6

Browse files
authored
Merge pull request hpsa#240 from aginni/octane-dev-latest
Rename job event support
2 parents f97f8ce + f85dda0 commit 2a265d6

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

src/main/java/com/microfocus/application/automation/tools/octane/events/GlobalEventsListenerOctaneImpl.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,22 @@
2020

2121
package com.microfocus.application.automation.tools.octane.events;
2222

23+
import com.cloudbees.hudson.plugins.folder.Folder;
2324
import com.hp.octane.integrations.OctaneSDK;
2425
import com.hp.octane.integrations.dto.DTOFactory;
2526
import com.hp.octane.integrations.dto.events.CIEvent;
2627
import com.hp.octane.integrations.dto.events.CIEventType;
28+
import com.hp.octane.integrations.dto.events.ItemType;
29+
import com.microfocus.application.automation.tools.octane.CIJenkinsServicesImpl;
2730
import com.microfocus.application.automation.tools.octane.configuration.ConfigurationService;
2831
import com.microfocus.application.automation.tools.octane.configuration.SDKBasedLoggerProvider;
2932
import com.microfocus.application.automation.tools.octane.executor.UftTestDiscoveryDispatcher;
3033
import com.microfocus.application.automation.tools.octane.model.processors.projects.JobProcessorFactory;
34+
import com.microfocus.application.automation.tools.octane.tests.build.BuildHandlerUtils;
3135
import com.microfocus.application.automation.tools.settings.OctaneServerSettingsBuilder;
3236
import hudson.Extension;
3337
import hudson.model.Item;
38+
import hudson.model.Job;
3439
import hudson.model.listeners.ItemListener;
3540
import jenkins.model.Jenkins;
3641
import org.apache.logging.log4j.Logger;
@@ -84,4 +89,59 @@ public void onBeforeShutdown() {
8489
UftTestDiscoveryDispatcher dispatcher = Jenkins.get().getExtensionList(UftTestDiscoveryDispatcher.class).get(0);
8590
dispatcher.close();
8691
}
92+
93+
@Override
94+
public void onRenamed(Item item, String oldName, String newName) {
95+
if(!OctaneSDK.hasClients()){
96+
return;
97+
}
98+
logger.info("Renaming Job " + oldName + " to " + item.getFullName());
99+
100+
try {
101+
CIEvent event = dtoFactory.newDTO(CIEvent.class)
102+
.setEventType(CIEventType.RENAMED);
103+
String project;
104+
if(isJob(item)) {
105+
project = JobProcessorFactory.getFlowProcessor((Job) item).getTranslatedJobName();
106+
event.setItemType(ItemType.JOB);
107+
} else if (isMultibranch(item)) {
108+
project = BuildHandlerUtils.translateFolderJobName(item.getFullName());
109+
event.setItemType(ItemType.MULTI_BRANCH);
110+
} else if(isFolder(item)) {
111+
project = BuildHandlerUtils.translateFolderJobName(item.getFullName());
112+
event.setItemType(ItemType.FOLDER);
113+
} else {
114+
logger.info("Cannot handle rename for " + item.getClass().getName());
115+
return;
116+
}
117+
118+
String previousProject = getPreviousProject(oldName, newName, project);
119+
120+
event.setProject(project)
121+
.setProjectDisplayName(newName)
122+
.setPreviousProject(previousProject)
123+
.setPreviousProjectDisplayName(oldName);
124+
125+
CIJenkinsServicesImpl.publishEventToRelevantClients(event);
126+
} catch (Throwable throwable) {
127+
logger.error("failed to build and/or dispatch RENAMED event for " + item, throwable);
128+
}
129+
}
130+
131+
private String getPreviousProject(String oldName, String newName, String project) {
132+
String jobPath = project.substring(0, project.lastIndexOf(newName));
133+
return jobPath + oldName;
134+
}
135+
136+
private boolean isFolder(Item item){
137+
return item.getClass().getName().equals(JobProcessorFactory.FOLDER_JOB_NAME) && item instanceof Folder;
138+
}
139+
140+
private boolean isMultibranch(Item item){
141+
return item.getClass().getName().equalsIgnoreCase(JobProcessorFactory.WORKFLOW_MULTI_BRANCH_JOB_NAME);
142+
}
143+
144+
private boolean isJob(Item item){
145+
return item instanceof Job;
146+
}
87147
}

0 commit comments

Comments
 (0)