X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.app.api%2Fsrc%2Forg%2Fargeo%2Fapp%2Fapi%2FJcrName.java;fp=org.argeo.app.api%2Fsrc%2Forg%2Fargeo%2Fapp%2Fapi%2FJcrName.java;h=182494a7fc77fe33b8d726a8fb726eeb84c1cafc;hp=0000000000000000000000000000000000000000;hb=6e56ffa34cb02ab04d028423aea342e3dfed4358;hpb=c285180bece610b2c2921d44fe14b6dde2123efa diff --git a/org.argeo.app.api/src/org/argeo/app/api/JcrName.java b/org.argeo.app.api/src/org/argeo/app/api/JcrName.java new file mode 100644 index 0000000..182494a --- /dev/null +++ b/org.argeo.app.api/src/org/argeo/app/api/JcrName.java @@ -0,0 +1,30 @@ +package org.argeo.app.api; + +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(); + } +}