summaryrefslogtreecommitdiffstats
path: root/vespa-athenz
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@oath.com>2018-01-11 13:33:50 +0100
committerBjørn Christian Seime <bjorncs@oath.com>2018-01-11 13:55:15 +0100
commit375c752bde74d02d4a98e974f8e1841ec30e5942 (patch)
tree07dca5961b582fb1f69886b1418a7ab82b28d32a /vespa-athenz
parentd7aa21bf229babfd7931fa02e111a44fe50fa987 (diff)
Move AthenzDomain to vespa-athenz
Diffstat (limited to 'vespa-athenz')
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzDomain.java71
1 files changed, 71 insertions, 0 deletions
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzDomain.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzDomain.java
new file mode 100644
index 00000000000..72d7785c282
--- /dev/null
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzDomain.java
@@ -0,0 +1,71 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.athenz.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Objects;
+import java.util.regex.Pattern;
+
+/**
+ * @author bjorncs
+ */
+public class AthenzDomain {
+
+ private static final Pattern NAME_PATTERN = Pattern.compile("[a-zA-Z0-9_][a-zA-Z0-9_\\-.]*[a-zA-Z0-9_]");
+
+ private final String name;
+
+ @JsonCreator
+ public AthenzDomain(String name) {
+ validateName(name);
+ this.name = name;
+ }
+
+ private static void validateName(String name) {
+ if (!NAME_PATTERN.matcher(name).matches()) {
+ throw new IllegalArgumentException("Not a valid domain name: '" + name + "'");
+ }
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ public boolean isTopLevelDomain() {
+ return !name.contains(".");
+ }
+
+ public AthenzDomain getParent() {
+ return new AthenzDomain(name.substring(0, lastDot()));
+ }
+
+ public String getNameSuffix() {
+ return name.substring(lastDot() + 1);
+ }
+
+ private int lastDot() {
+ return name.lastIndexOf('.');
+ }
+
+ @Override
+ public String toString() {
+ return "AthenzDomain{" +
+ "name='" + name + '\'' +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AthenzDomain that = (AthenzDomain) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+}