+package org.argeo.cms.jcr.acr;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Objects;
+
+import org.argeo.api.acr.spi.ContentNamespace;
+
+/** JCR-specific content namespaces. */
+public enum JcrContentNamespace implements ContentNamespace {
+ //
+ // ARGEO
+ //
+ JCRX("jcrx", "http://www.argeo.org/ns/jcrx", null, null),
+ //
+ // EXTERNAL
+ //
+ JCR("jcr", "http://www.jcp.org/jcr/1.0", null,
+ "https://jackrabbit.apache.org/archive/wiki/JCR/NamespaceRegistry_115513459.html"),
+ //
+ JCR_MIX("mix", "http://www.jcp.org/jcr/mix/1.0", null,
+ "https://jackrabbit.apache.org/archive/wiki/JCR/NamespaceRegistry_115513459.html"),
+ //
+ JCR_NT("nt", "http://www.jcp.org/jcr/nt/1.0", null,
+ "https://jackrabbit.apache.org/archive/wiki/JCR/NamespaceRegistry_115513459.html"),
+ //
+ JACKRABBIT("rep", "internal", null,
+ "https://jackrabbit.apache.org/archive/wiki/JCR/NamespaceRegistry_115513459.html"),
+ //
+ ;
+
+ private final static String RESOURCE_BASE = "/org/argeo/cms/jcr/acr/schemas/";
+
+ private String defaultPrefix;
+ private String namespace;
+ private URL resource;
+ private URL publicUrl;
+
+ JcrContentNamespace(String defaultPrefix, String namespace, String resourceFileName, String publicUrl) {
+ Objects.requireNonNull(namespace);
+ this.defaultPrefix = defaultPrefix;
+ Objects.requireNonNull(namespace);
+ this.namespace = namespace;
+ if (resourceFileName != null) {
+ resource = getClass().getResource(RESOURCE_BASE + resourceFileName);
+ Objects.requireNonNull(resource);
+ }
+ if (publicUrl != null)
+ try {
+ this.publicUrl = new URL(publicUrl);
+ } catch (MalformedURLException e) {
+ throw new IllegalArgumentException("Cannot interpret public URL", e);
+ }
+ }
+
+ @Override
+ public String getDefaultPrefix() {
+ return defaultPrefix;
+ }
+
+ @Override
+ public String getNamespaceURI() {
+ return namespace;
+ }
+
+ @Override
+ public URL getSchemaResource() {
+ return resource;
+ }
+
+ public URL getPublicUrl() {
+ return publicUrl;
+ }
+
+}