aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DelegatingBuildService.java
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DelegatingBuildService.java')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DelegatingBuildService.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DelegatingBuildService.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DelegatingBuildService.java
new file mode 100644
index 00000000000..d2159841c9d
--- /dev/null
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DelegatingBuildService.java
@@ -0,0 +1,30 @@
+package com.yahoo.vespa.hosted.controller.deployment;
+
+import com.yahoo.vespa.hosted.controller.api.integration.BuildService;
+
+/**
+ * Sends build jobs to an internal build system whenever it accepts them, or to an external one otherwise.
+ *
+ * @author jonmv
+ */
+public class DelegatingBuildService implements BuildService {
+
+ private final BuildService external;
+ private final BuildService internal;
+
+ public DelegatingBuildService(BuildService external, BuildService internal) {
+ this.external = external;
+ this.internal = internal;
+ }
+
+ @Override
+ public void trigger(BuildJob buildJob) {
+ (internal.builds(buildJob) ? internal : external).trigger(buildJob);
+ }
+
+ @Override
+ public JobState stateOf(BuildJob buildJob) {
+ return (internal.builds(buildJob) ? internal : external).stateOf(buildJob);
+ }
+
+}