X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=core%2Forg.argeo.entity.api%2Fsrc%2Forg%2Fargeo%2Fentity%2FJcrName.java;fp=core%2Forg.argeo.entity.api%2Fsrc%2Forg%2Fargeo%2Fentity%2FJcrName.java;h=322c42ebe390171894abd7e70ae2c25ec088b1f3;hb=418ea1efbf3f0d6b706603c6ff1c0fdd17314773;hp=0000000000000000000000000000000000000000;hpb=70010c4afc5799622fcad5b075740d94da074798;p=gpl%2Fargeo-suite.git diff --git a/core/org.argeo.entity.api/src/org/argeo/entity/JcrName.java b/core/org.argeo.entity.api/src/org/argeo/entity/JcrName.java new file mode 100644 index 0000000..322c42e --- /dev/null +++ b/core/org.argeo.entity.api/src/org/argeo/entity/JcrName.java @@ -0,0 +1,30 @@ +package org.argeo.entity; + +import java.util.function.Supplier; + +/** Can be applied to {@link Enum}s in order to generate prefixed names. */ +@FunctionalInterface +public interface JcrName extends Supplier { + String name(); + + default String getPrefix() { + return null; + } + + default String getNamespace() { + return null; + } + + @Override + default String get() { + String prefix = getPrefix(); + return prefix != null ? prefix + ":" + name() : name(); + } + + default String withNamespace() { + String namespace = getNamespace(); + if (namespace == null) + throw new UnsupportedOperationException("No namespace is specified for " + getClass()); + return "{" + namespace + "}" + name(); + } +}