X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.entity.api%2Fsrc%2Forg%2Fargeo%2Fentity%2FJcrName.java;fp=org.argeo.entity.api%2Fsrc%2Forg%2Fargeo%2Fentity%2FJcrName.java;h=322c42ebe390171894abd7e70ae2c25ec088b1f3;hp=0000000000000000000000000000000000000000;hb=3440f51df3e4c015972c7b6a0efb3ce16188b89b;hpb=752a7b2614895002a3d184be166ef4162caf0d05 diff --git a/org.argeo.entity.api/src/org/argeo/entity/JcrName.java b/org.argeo.entity.api/src/org/argeo/entity/JcrName.java new file mode 100644 index 0000000..322c42e --- /dev/null +++ b/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(); + } +}