From 96a32ef190ccdfc2173b40cb610718fdd3fca214 Mon Sep 17 00:00:00 2001 From: Steven Cooney Date: Thu, 30 May 2019 15:45:32 +0100 Subject: [PATCH] Add Server Build Feature Definition Add the UI for the phabricator plugin build feature configuration. --- .../xlab/teamcity/phabricator/AppCommon.java | 4 -- .../xlab/teamcity/phabricator/Constants.java | 8 +++ .../xlab/teamcity/phabricator/AppServer.java | 4 -- .../PhabricatorPluginBuildFeature.java | 56 +++++++++++++++++++ ...build-server-plugin-phabricator-plugin.xml | 4 +- .../buildServerResources/example.jsp | 0 .../phabricatorBuildFeature.jsp | 9 +++ 7 files changed, 76 insertions(+), 9 deletions(-) delete mode 100644 Teamcity-Phabricator-Plugin/phabricator-plugin-common/src/main/java/uk/xlab/teamcity/phabricator/AppCommon.java create mode 100644 Teamcity-Phabricator-Plugin/phabricator-plugin-common/src/main/java/uk/xlab/teamcity/phabricator/Constants.java delete mode 100644 Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/java/uk/xlab/teamcity/phabricator/AppServer.java create mode 100644 Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/java/uk/xlab/teamcity/phabricator/PhabricatorPluginBuildFeature.java delete mode 100644 Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/buildServerResources/example.jsp create mode 100644 Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/buildServerResources/phabricatorBuildFeature.jsp diff --git a/Teamcity-Phabricator-Plugin/phabricator-plugin-common/src/main/java/uk/xlab/teamcity/phabricator/AppCommon.java b/Teamcity-Phabricator-Plugin/phabricator-plugin-common/src/main/java/uk/xlab/teamcity/phabricator/AppCommon.java deleted file mode 100644 index cfab8fa..0000000 --- a/Teamcity-Phabricator-Plugin/phabricator-plugin-common/src/main/java/uk/xlab/teamcity/phabricator/AppCommon.java +++ /dev/null @@ -1,4 +0,0 @@ -package uk.xlab.teamcity.phabricator; - -public class AppCommon { -} diff --git a/Teamcity-Phabricator-Plugin/phabricator-plugin-common/src/main/java/uk/xlab/teamcity/phabricator/Constants.java b/Teamcity-Phabricator-Plugin/phabricator-plugin-common/src/main/java/uk/xlab/teamcity/phabricator/Constants.java new file mode 100644 index 0000000..f9b742c --- /dev/null +++ b/Teamcity-Phabricator-Plugin/phabricator-plugin-common/src/main/java/uk/xlab/teamcity/phabricator/Constants.java @@ -0,0 +1,8 @@ +package uk.xlab.teamcity.phabricator; + +public class Constants { + public static final String BUILD_FEATURE_TYPE = "phabricator-build-feature"; + public static final String PLUGIN_NAME = "phabricator"; + public static final String PLUGIN_DISPLAY_NAME = "Phabricator Plugin"; + public static final String PHABRICATOR_URL_SETTING = "phabricator_url_setting"; +} diff --git a/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/java/uk/xlab/teamcity/phabricator/AppServer.java b/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/java/uk/xlab/teamcity/phabricator/AppServer.java deleted file mode 100644 index 3d3e908..0000000 --- a/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/java/uk/xlab/teamcity/phabricator/AppServer.java +++ /dev/null @@ -1,4 +0,0 @@ -package uk.xlab.teamcity.phabricator; - -public class AppServer { -} \ No newline at end of file diff --git a/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/java/uk/xlab/teamcity/phabricator/PhabricatorPluginBuildFeature.java b/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/java/uk/xlab/teamcity/phabricator/PhabricatorPluginBuildFeature.java new file mode 100644 index 0000000..1c85455 --- /dev/null +++ b/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/java/uk/xlab/teamcity/phabricator/PhabricatorPluginBuildFeature.java @@ -0,0 +1,56 @@ +package uk.xlab.teamcity.phabricator; + +import java.util.Map; + +import org.jetbrains.annotations.NotNull; + +import jetbrains.buildServer.log.Loggers; +import jetbrains.buildServer.serverSide.BuildFeature; +import jetbrains.buildServer.web.openapi.PluginDescriptor; + +public class PhabricatorPluginBuildFeature extends BuildFeature { + private final String myEditUrl; + + public PhabricatorPluginBuildFeature(@NotNull final PluginDescriptor pluginDescriptor) { + myEditUrl = pluginDescriptor.getPluginResourcesPath("phabricatorBuildFeature.jsp"); + + Loggers.SERVER.info("Phabricator build feature registered"); + } + + @Override + public String getType() { + return Constants.BUILD_FEATURE_TYPE; + } + + @Override + public String getDisplayName() { + return Constants.PLUGIN_DISPLAY_NAME; + } + + @Override + public String getEditParametersUrl() { + return myEditUrl; + } + + @Override + public boolean isMultipleFeaturesPerBuildTypeAllowed() { + return false; + } + + /** + * Populates the Parameters Description on the build features page + */ + @NotNull + @Override + public String describeParameters(@NotNull final Map params) { + String url = ""; + + for(String key : params.keySet()){ + if(key.equals(Constants.PHABRICATOR_URL_SETTING)){ + url = params.get(key); + } + } + + return String.format("Phabricator URL: %s", url); + } +} diff --git a/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/META-INF/build-server-plugin-phabricator-plugin.xml b/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/META-INF/build-server-plugin-phabricator-plugin.xml index 814e0bc..f6033b1 100644 --- a/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/META-INF/build-server-plugin-phabricator-plugin.xml +++ b/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/META-INF/build-server-plugin-phabricator-plugin.xml @@ -3,4 +3,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" default-autowire="constructor"> - \ No newline at end of file + + + diff --git a/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/buildServerResources/example.jsp b/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/buildServerResources/example.jsp deleted file mode 100644 index e69de29..0000000 diff --git a/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/buildServerResources/phabricatorBuildFeature.jsp b/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/buildServerResources/phabricatorBuildFeature.jsp new file mode 100644 index 0000000..b4d78b2 --- /dev/null +++ b/Teamcity-Phabricator-Plugin/phabricator-plugin-server/src/main/resources/buildServerResources/phabricatorBuildFeature.jsp @@ -0,0 +1,9 @@ +<%@ taglib prefix="props" tagdir="/WEB-INF/tags/props" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + +Report build status in real-time to your Phabricator instance. +Phabricator URL: