summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2020-05-15 13:15:41 +0200
committerMorten Tokle <mortent@verizonmedia.com>2020-05-15 13:26:58 +0200
commit662f00565c1181a3c0d0750a9ef0fbb746b5ec7a (patch)
treeb64de8324088c97b283dd3c08bd21f6d01078076 /config-model-api
parentca294b0a05520dff341016d2fc75056ac75b0d8e (diff)
Persist application roles
Diffstat (limited to 'config-model-api')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationRoles.java51
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java2
2 files changed, 53 insertions, 0 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationRoles.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationRoles.java
new file mode 100644
index 00000000000..8492603e2e3
--- /dev/null
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationRoles.java
@@ -0,0 +1,51 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.config.model.api;
+
+import com.google.common.base.Strings;
+
+/**
+ * @author mortent
+ */
+public class ApplicationRoles {
+ private final String applicationHostRole;
+ private final String applicationContainerRole;
+
+ public ApplicationRoles(String applicationHostRole, String applicationContainerRole) {
+ this.applicationHostRole = applicationHostRole;
+ this.applicationContainerRole = applicationContainerRole;
+ }
+
+ /**
+ * @return an ApplicationRoles instance if both hostRole and containerRole is non-empty, <code>null</code> otherwise
+ */
+ public static ApplicationRoles fromString(String hostRole, String containerRole) {
+ if(Strings.isNullOrEmpty(hostRole) || Strings.isNullOrEmpty(containerRole)) {
+ return null;
+ }
+ return new ApplicationRoles(hostRole, containerRole);
+ }
+
+ public String applicationContainerRole() {
+ return applicationContainerRole;
+ }
+
+ public String applicationHostRole() {
+ return applicationHostRole;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ApplicationRoles that = (ApplicationRoles) o;
+ if (!applicationHostRole.equals(that.applicationHostRole)) return false;
+ return applicationContainerRole.equals(that.applicationContainerRole);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = applicationHostRole.hashCode();
+ result = 31 * result + applicationContainerRole.hashCode();
+ return result;
+ }
+}
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
index 7641f14b007..33369727703 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
@@ -93,6 +93,8 @@ public interface ModelContext {
// TODO(mpolden): Remove after May 2020
default boolean useDedicatedNodesWhenUnspecified() { return true; }
+
+ Optional<ApplicationRoles> applicationRoles();
}
}