server/src/jetbrains/buildServer/agentsDiff/BuildAgentSummaryPageExtension.java (51 lines of code) (raw):
package jetbrains.buildServer.agentsDiff;
import jetbrains.buildServer.controllers.agent.AgentDetailsFormBase;
import jetbrains.buildServer.serverSide.AgentDescription;
import jetbrains.buildServer.serverSide.SBuildAgent;
import jetbrains.buildServer.serverSide.agentTypes.SAgentType;
import jetbrains.buildServer.web.openapi.PagePlaces;
import jetbrains.buildServer.web.openapi.PlaceId;
import jetbrains.buildServer.web.openapi.PluginDescriptor;
import jetbrains.buildServer.web.openapi.SimplePageExtension;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
* @author Evgeniy.Koshkin
*/
public class BuildAgentSummaryPageExtension extends SimplePageExtension {
public BuildAgentSummaryPageExtension(@NotNull PagePlaces pagePlaces,
@NotNull PluginDescriptor pluginDescriptor) {
super(pagePlaces, PlaceId.AGENT_SUMMARY, "compareWith", pluginDescriptor.getPluginResourcesPath("compareWith.jsp"));
addCssFile(pluginDescriptor.getPluginResourcesPath("agentsDiff.css"));
addJsFile(pluginDescriptor.getPluginResourcesPath("agentsDiff.js"));
register();
}
@Override
public final boolean isAvailable(@NotNull final HttpServletRequest request) {
AgentDetailsFormBase form = findForm(request);
if (form == null) return false;
AgentDescription agent = form.getAgent();
return agent instanceof SBuildAgent
|| agent instanceof SAgentType && ((SAgentType) agent).getRealAgent() == null;
}
@Override
public final void fillModel(@NotNull final Map<String, Object> model, @NotNull final HttpServletRequest request) {
AgentDescription agent = getAgent(request);
if (agent != null) {
String id;
if (agent instanceof SBuildAgent) {
id = String.valueOf(((SBuildAgent) agent).getId());
} else if (agent instanceof SAgentType) {
id = BuildAgentsDiffViewController.TYPE_PREFIX + ((SAgentType) agent).getAgentTypeId();
} else return;
model.put("diffUrl", BuildAgentsDiffUtils.getDiffPermalink(id, null));
}
}
private AgentDescription getAgent(final HttpServletRequest request) {
AgentDetailsFormBase form = findForm(request);
return form != null ? form.getAgent() : null;
}
@Nullable
private AgentDetailsFormBase findForm(@NotNull HttpServletRequest request) {
return (AgentDetailsFormBase) request.getAttribute("agentDetails");
}
}