Clarify and refactor content namespaces
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / AbstractContentRepository.java
index 8ff14169868c2d4878cef8152166aa5e60a3c549..c1f1ef5f3ac2b3d52619f5578365253ec57558b5 100644 (file)
@@ -17,10 +17,12 @@ import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.argeo.api.acr.ArgeoNamespace;
 import org.argeo.api.acr.Content;
 import org.argeo.api.acr.CrName;
 import org.argeo.api.acr.NamespaceUtils;
 import org.argeo.api.acr.RuntimeNamespaceContext;
+import org.argeo.api.acr.spi.ContentNamespace;
 import org.argeo.api.acr.spi.ContentProvider;
 import org.argeo.api.acr.spi.ProvidedContent;
 import org.argeo.api.acr.spi.ProvidedRepository;
@@ -52,6 +54,7 @@ public abstract class AbstractContentRepository implements ProvidedRepository {
 //     public final static String ACR_MOUNT_PATH_PROPERTY = "acr.mount.path";
 
        public AbstractContentRepository() {
+               long begin = System.currentTimeMillis();
                // types
                typesManager = new TypesManager();
                typesManager.init();
@@ -60,7 +63,8 @@ public abstract class AbstractContentRepository implements ProvidedRepository {
                        for (QName type : types) {
                                log.trace(type + " - " + typesManager.getAttributeTypes(type));
                        }
-
+               long duration = System.currentTimeMillis() - begin;
+               log.debug(() -> "CMS content types available (initialisation took " + duration + " ms)");
        }
 
        protected abstract CmsContentSession newSystemSession();
@@ -81,14 +85,19 @@ public abstract class AbstractContentRepository implements ProvidedRepository {
         */
        @Override
        public void addProvider(ContentProvider provider) {
-               if (mountManager == null)
+               if (mountManager == null) {
                        providersToAdd.add(provider);
-               else
+                       log.debug(
+                                       () -> "Will add provider " + provider.getMountPath() + " (" + provider.getClass().getName() + ")");
+               } else {
                        mountManager.addStructuralContentProvider(provider);
+                       log.debug(() -> "Added provider " + provider.getMountPath() + " (" + provider.getClass().getName() + ")");
+               }
        }
 
-       public void registerTypes(String prefix, String namespaceURI, String schemaSystemId) {
-               typesManager.registerTypes(prefix, namespaceURI, schemaSystemId);
+       @Override
+       public void registerTypes(ContentNamespace... namespaces) {
+               typesManager.registerTypes(namespaces);
        }
 
        /*
@@ -111,7 +120,7 @@ public abstract class AbstractContentRepository implements ProvidedRepository {
 //                             document = dBuilder.parse(inputSource);
 //                     } else {
                        document = dBuilder.newDocument();
-                       Element root = document.createElementNS(CrName.CR_NAMESPACE_URI,
+                       Element root = document.createElementNS(ArgeoNamespace.CR_NAMESPACE_URI,
                                        NamespaceUtils.toPrefixedName(CrName.root.qName()));
 
                        for (String prefix : RuntimeNamespaceContext.getPrefixes().keySet()) {
@@ -210,4 +219,10 @@ public abstract class AbstractContentRepository implements ProvidedRepository {
        TypesManager getTypesManager() {
                return typesManager;
        }
+
+       CmsContentSession getSystemSession() {
+               return systemSession;
+       }
+       
+       
 }