X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2FAbstractContentRepository.java;h=1481b3a40ff4125c32f94eaa3adda8c7f08364d9;hb=4c7e1885b8bf3c93fa0919ace122e3f289a925ea;hp=cfffea027855b2fcd3a8e3301fa7f80bc6dfc267;hpb=da9d144b6b241e1526a3bd255dff905a7969a5bc;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/acr/AbstractContentRepository.java b/org.argeo.cms/src/org/argeo/cms/acr/AbstractContentRepository.java index cfffea027..1481b3a40 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/AbstractContentRepository.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/AbstractContentRepository.java @@ -5,6 +5,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Path; +import java.util.HashSet; import java.util.Set; import javax.xml.namespace.QName; @@ -40,6 +41,8 @@ public abstract class AbstractContentRepository implements ProvidedRepository { private CmsContentSession systemSession; + private Set providersToAdd = new HashSet<>(); + // utilities /** Should be used only to copy source and results. */ private TransformerFactory identityTransformerFactory = TransformerFactory.newInstance(); @@ -76,7 +79,10 @@ public abstract class AbstractContentRepository implements ProvidedRepository { */ public void addProvider(ContentProvider provider) { - mountManager.addStructuralContentProvider(provider); + if (mountManager == null) + providersToAdd.add(provider); + else + mountManager.addStructuralContentProvider(provider); } public void registerTypes(String prefix, String namespaceURI, String schemaSystemId) { @@ -128,6 +134,10 @@ public abstract class AbstractContentRepository implements ProvidedRepository { throw new IllegalStateException("Cannot init ACR root " + path, e); } + // add content providers already notified + for (ContentProvider contentProvider : providersToAdd) + addProvider(contentProvider); + providersToAdd.clear(); } public void writeDom(Document document, OutputStream out) throws IOException {