Register JCR namespaces.
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 27 Jun 2022 08:14:14 +0000 (10:14 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 27 Jun 2022 08:14:14 +0000 (10:14 +0200)
eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/app/AcrContentTreeView.java
jcr/org.argeo.cms.jcr/OSGI-INF/jcrDeployment.xml
jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/CmsJcrDeployment.java
org.argeo.cms.ux/src/org/argeo/cms/ux/acr/ContentHierarchicalPart.java
org.argeo.cms/OSGI-INF/nodeUserAdmin.xml
org.argeo.cms/src/org/argeo/cms/acr/TypesManager.java

index cb339929f1042c1e1963edbabe73254b96b13a9a..fb1a79d44333f016faa2d201a2ef349c6ee19418 100644 (file)
@@ -57,7 +57,11 @@ public class AcrContentTreeView extends Composite {
 
                        @Override
                        public String getText(QName model) {
-                               return toPrefixedName(model);
+                               try {
+                                       return NamespaceUtils.toPrefixedName(model);
+                               } catch (IllegalStateException e) {
+                                       return model.toString();
+                               }
                        }
                });
                attributesPart.addColumn(new Column<QName>() {
index a94b15168f483b05ea270c817f69ac04e3ccd0e9..2c5a0d145cdddc8b432cef2aab2f183ff65a92fd 100644 (file)
@@ -2,4 +2,5 @@
 <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" name="JCR Deployment">
    <implementation class="org.argeo.cms.jcr.internal.CmsJcrDeployment"/>
    <reference bind="setCmsDeployment" cardinality="1..1" interface="org.argeo.api.cms.CmsDeployment" policy="static"/>
+   <reference bind="setContentRepository" cardinality="1..1" interface="org.argeo.api.acr.spi.ProvidedRepository" name="ProvidedRepository" policy="static"/>
 </scr:component>
index 16f5979d736304caad7833a607730c4db91d6537..6ba9307bee896c0e6504bb19864935bfd430cc2e 100644 (file)
@@ -20,6 +20,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import javax.jcr.NamespaceRegistry;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -29,6 +30,7 @@ import javax.servlet.Servlet;
 import org.apache.jackrabbit.commons.cnd.CndImporter;
 import org.apache.jackrabbit.core.RepositoryContext;
 import org.apache.jackrabbit.core.RepositoryImpl;
+import org.argeo.api.acr.spi.ProvidedRepository;
 import org.argeo.api.cms.CmsConstants;
 import org.argeo.api.cms.CmsDeployment;
 import org.argeo.api.cms.CmsLog;
@@ -73,18 +75,26 @@ public class CmsJcrDeployment {
        private boolean nodeAvailable = false;
 
        CmsDeployment cmsDeployment;
+       private ProvidedRepository contentRepository;
 
        public void start() {
                dataModels = new DataModels(bc);
 
                ServiceTracker<?, ?> repoContextSt = new RepositoryContextStc();
                repoContextSt.open();
-               //KernelUtils.asyncOpen(repoContextSt);
+               // KernelUtils.asyncOpen(repoContextSt);
 
 //             nodeDeployment = CmsJcrActivator.getService(NodeDeployment.class);
 
                JcrInitUtils.addToDeployment(cmsDeployment);
 
+               contentRepository.registerTypes(NamespaceRegistry.PREFIX_JCR, NamespaceRegistry.NAMESPACE_JCR, null);
+               contentRepository.registerTypes(NamespaceRegistry.PREFIX_MIX, NamespaceRegistry.NAMESPACE_MIX, null);
+               contentRepository.registerTypes(NamespaceRegistry.PREFIX_NT, NamespaceRegistry.NAMESPACE_NT, null);
+               // Jackrabbit
+               // see https://jackrabbit.apache.org/archive/wiki/JCR/NamespaceRegistry_115513459.html
+               contentRepository.registerTypes("rep", "internal", null);
+
        }
 
        public void stop() {
@@ -106,6 +116,10 @@ public class CmsJcrDeployment {
                this.cmsDeployment = cmsDeployment;
        }
 
+       public void setContentRepository(ProvidedRepository contentRepository) {
+               this.contentRepository = contentRepository;
+       }
+
        /**
         * Checks whether the deployment is available according to expectations, and
         * mark it as available.
index ad4df115f923a193a5b92e0171db2afc003e8ae4..237219ad6a78ffa0a2d3fb1c2bf1612abd6d063f 100644 (file)
@@ -5,6 +5,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.argeo.api.acr.Content;
+import org.argeo.api.acr.NamespaceUtils;
 import org.argeo.cms.ux.widgets.AbstractDataPart;
 import org.argeo.cms.ux.widgets.HierarchicalPart;
 
@@ -23,7 +24,11 @@ public class ContentHierarchicalPart extends AbstractDataPart<Content, Content>
 
        @Override
        public String getText(Content model) {
-               return model.getName().toString();
+               try {
+                       return NamespaceUtils.toPrefixedName(model.getName());
+               } catch (IllegalStateException e) {
+                       return model.getName().toString();
+               }
        }
 
 }
index cae688b0a9ec0b9ca8dd5013eea7a65a5ac8ec78..268908e5740e5b586900373ea572a2b94b906026 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" name="Node User Admin">
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" immediate="false" name="Node User Admin">
    <implementation class="org.argeo.cms.internal.osgi.NodeUserAdmin"/>
    <property name="service.pid" type="String" value="org.argeo.api.userAdmin"/>
    <service>
index 29541b9d854339e7423ca9d750957a2f7fdbb67e..72bb26f209c49e5437d5eaa8895fcffc78c12d7d 100644 (file)
@@ -103,7 +103,8 @@ class TypesManager {
 //             prefixes.put(defaultPrefix, namespace);
                RuntimeNamespaceContext.register(namespace, defaultPrefix);
 
-               sources.add(new StreamSource(xsdSystemId));
+               if (xsdSystemId != null)
+                       sources.add(new StreamSource(xsdSystemId));
                reload();
        }