package fr.openwide.core.basicapp.web.application.common.util; import java.io.Serializable; import fr.openwide.core.commons.util.functional.Joiners; public final class ResourceKeyGenerator implements Serializable { private static final long serialVersionUID = 1L; private final CharSequence base; public static ResourceKeyGenerator of(CharSequence base) { return new ResourceKeyGenerator(base); } private ResourceKeyGenerator(CharSequence base) { this.base = base; } protected String join(CharSequence ... operands) { return Joiners.onDot().skipNulls().join(operands); } public String resourceKey() { return base.toString(); } public String resourceKey(CharSequence suffix) { return join(base, suffix); } public ResourceKeyGenerator append(CharSequence suffix) { return new ResourceKeyGenerator(join(base, suffix)); } public ResourceKeyGenerator withPrefix(CharSequence prefix) { return new ResourceKeyGenerator(join(prefix, base)); } }