From e41a5f598aa4692ee4109e5442e5fcd8565e98bd Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 27 Jun 2022 10:14:14 +0200 Subject: [PATCH] Register JCR namespaces. --- .../argeo/cms/swt/app/AcrContentTreeView.java | 6 +++++- jcr/org.argeo.cms.jcr/OSGI-INF/jcrDeployment.xml | 1 + .../argeo/cms/jcr/internal/CmsJcrDeployment.java | 16 +++++++++++++++- .../cms/ux/acr/ContentHierarchicalPart.java | 7 ++++++- org.argeo.cms/OSGI-INF/nodeUserAdmin.xml | 2 +- .../src/org/argeo/cms/acr/TypesManager.java | 3 ++- 6 files changed, 30 insertions(+), 5 deletions(-) diff --git a/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/app/AcrContentTreeView.java b/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/app/AcrContentTreeView.java index cb339929f..fb1a79d44 100644 --- a/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/app/AcrContentTreeView.java +++ b/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/app/AcrContentTreeView.java @@ -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() { diff --git a/jcr/org.argeo.cms.jcr/OSGI-INF/jcrDeployment.xml b/jcr/org.argeo.cms.jcr/OSGI-INF/jcrDeployment.xml index a94b15168..2c5a0d145 100644 --- a/jcr/org.argeo.cms.jcr/OSGI-INF/jcrDeployment.xml +++ b/jcr/org.argeo.cms.jcr/OSGI-INF/jcrDeployment.xml @@ -2,4 +2,5 @@ + diff --git a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/CmsJcrDeployment.java b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/CmsJcrDeployment.java index 16f5979d7..6ba9307be 100644 --- a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/CmsJcrDeployment.java +++ b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/CmsJcrDeployment.java @@ -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. diff --git a/org.argeo.cms.ux/src/org/argeo/cms/ux/acr/ContentHierarchicalPart.java b/org.argeo.cms.ux/src/org/argeo/cms/ux/acr/ContentHierarchicalPart.java index ad4df115f..237219ad6 100644 --- a/org.argeo.cms.ux/src/org/argeo/cms/ux/acr/ContentHierarchicalPart.java +++ b/org.argeo.cms.ux/src/org/argeo/cms/ux/acr/ContentHierarchicalPart.java @@ -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 @Override public String getText(Content model) { - return model.getName().toString(); + try { + return NamespaceUtils.toPrefixedName(model.getName()); + } catch (IllegalStateException e) { + return model.getName().toString(); + } } } diff --git a/org.argeo.cms/OSGI-INF/nodeUserAdmin.xml b/org.argeo.cms/OSGI-INF/nodeUserAdmin.xml index cae688b0a..268908e57 100644 --- a/org.argeo.cms/OSGI-INF/nodeUserAdmin.xml +++ b/org.argeo.cms/OSGI-INF/nodeUserAdmin.xml @@ -1,5 +1,5 @@ - + diff --git a/org.argeo.cms/src/org/argeo/cms/acr/TypesManager.java b/org.argeo.cms/src/org/argeo/cms/acr/TypesManager.java index 29541b9d8..72bb26f20 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/TypesManager.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/TypesManager.java @@ -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(); } -- 2.30.2