]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/acr/CmsContentNamespace.java
Make DOM ACR more robust when used as repository root.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / CmsContentNamespace.java
1 package org.argeo.cms.acr;
2
3 import java.net.MalformedURLException;
4 import java.net.URL;
5 import java.util.Objects;
6
7 import org.argeo.api.acr.ArgeoNamespace;
8 import org.argeo.api.acr.spi.ContentNamespace;
9
10 /** Content namespaces supported by CMS. */
11 public enum CmsContentNamespace implements ContentNamespace {
12 //
13 // ARGEO
14 //
15 CR(ArgeoNamespace.CR_DEFAULT_PREFIX, ArgeoNamespace.CR_NAMESPACE_URI, "cr.xsd", null),
16 //
17 SLC("slc", "http://www.argeo.org/ns/slc", null, null),
18 //
19 ARGEO("argeo", "http://www.argeo.org/ns/argeo", null, null),
20 //
21 // EXTERNAL
22 //
23 XSD("xs", "http://www.w3.org/2001/XMLSchema", "XMLSchema.xsd", "http://www.w3.org/2001/XMLSchema.xsd"),
24 //
25 XML("xml", "http://www.w3.org/XML/1998/namespace", "xml.xsd", "http://www.w3.org/2001/xml.xsd"),
26 //
27 XLINK("xlink", "http://www.w3.org/1999/xlink", "xlink.xsd", "https://www.w3.org/1999/xlink.xsd"),
28 //
29 WEBDAV("D", "DAV:", null, "https://raw.githubusercontent.com/lookfirst/sardine/master/webdav.xsd"),
30 //
31 XSLT("xsl", "http://www.w3.org/1999/XSL/Transform", "schema-for-xslt20.xsd",
32 "https://www.w3.org/2007/schema-for-xslt20.xsd"),
33 //
34 SVG("svg", "http://www.w3.org/2000/svg", "SVG.xsd",
35 "https://raw.githubusercontent.com/oreillymedia/HTMLBook/master/schema/svg/SVG.xsd"),
36 //
37 DSML("dsml", "urn:oasis:names:tc:DSML:2:0:core", "DSMLv2.xsd",
38 "https://www.oasis-open.org/committees/dsml/docs/DSMLv2.xsd"),
39 //
40 ;
41
42 private final static String RESOURCE_BASE = "/org/argeo/cms/acr/schemas/";
43
44 private String defaultPrefix;
45 private String namespace;
46 private URL resource;
47 private URL publicUrl;
48
49 CmsContentNamespace(String defaultPrefix, String namespace, String resourceFileName, String publicUrl) {
50 Objects.requireNonNull(namespace);
51 this.defaultPrefix = defaultPrefix;
52 Objects.requireNonNull(namespace);
53 this.namespace = namespace;
54 if (resourceFileName != null) {
55 resource = getClass().getResource(RESOURCE_BASE + resourceFileName);
56 Objects.requireNonNull(resource);
57 }
58 if (publicUrl != null)
59 try {
60 this.publicUrl = new URL(publicUrl);
61 } catch (MalformedURLException e) {
62 throw new IllegalArgumentException("Cannot interpret public URL", e);
63 }
64 }
65
66 @Override
67 public String getDefaultPrefix() {
68 return defaultPrefix;
69 }
70
71 @Override
72 public String getNamespaceURI() {
73 return namespace;
74 }
75
76 @Override
77 public URL getSchemaResource() {
78 return resource;
79 }
80
81 public URL getPublicUrl() {
82 return publicUrl;
83 }
84
85 }