]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/acr/CmsContentRepository.java
Make CMS user app more robust.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / CmsContentRepository.java
index 923142c82333ec02d7d566cb3a9503065c2d5c93..2493a89bedc0993c856d7c85cb6b5014d5fa7cb7 100644 (file)
@@ -11,7 +11,6 @@ import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
 import java.util.NavigableMap;
-import java.util.Set;
 import java.util.TreeMap;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionStage;
@@ -29,7 +28,6 @@ import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
-import javax.xml.validation.Schema;
 
 import org.argeo.api.acr.Content;
 import org.argeo.api.acr.ContentSession;
@@ -64,7 +62,7 @@ public class CmsContentRepository implements ProvidedRepository {
        // TODO synchronize ?
        private NavigableMap<String, String> prefixes = new TreeMap<>();
 
-       private Schema schema;
+//     private Schema schema;
 
        private CmsContentSession systemSession;
 
@@ -176,7 +174,7 @@ public class CmsContentRepository implements ProvidedRepository {
                        });
 
                        Document document;
-                       if (Files.exists(path)) {
+                       if (path != null && Files.exists(path)) {
                                InputSource inputSource = new InputSource(path.toAbsolutePath().toUri().toString());
                                inputSource.setEncoding(StandardCharsets.UTF_8.name());
                                // TODO public id as well?
@@ -185,18 +183,20 @@ public class CmsContentRepository implements ProvidedRepository {
                                document = dBuilder.newDocument();
 //                             Element root = document.createElementNS(CrName.ROOT.getNamespaceURI(),
 //                                             CrName.ROOT.get().toPrefixedString());
-                               Element root = document.createElement(CrName.ROOT.get().toPrefixedString());
+                               Element root = document.createElementNS(CrName.CR_NAMESPACE_URI, CrName.ROOT.get().toPrefixedString());
                                // root.setAttribute("xmlns", "");
-                               root.setAttribute("xmlns:" + CrName.CR_DEFAULT_PREFIX, CrName.CR_NAMESPACE_URI);
+//                             root.setAttribute("xmlns:" + CrName.CR_DEFAULT_PREFIX, CrName.CR_NAMESPACE_URI);
                                document.appendChild(root);
 
                                // write it
-                               TransformerFactory transformerFactory = TransformerFactory.newInstance();
-                               Transformer transformer = transformerFactory.newTransformer();
-                               DOMSource source = new DOMSource(document);
-                               try (Writer writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
-                                       StreamResult result = new StreamResult(writer);
-                                       transformer.transform(source, result);
+                               if (path != null) {
+                                       TransformerFactory transformerFactory = TransformerFactory.newInstance();
+                                       Transformer transformer = transformerFactory.newTransformer();
+                                       DOMSource source = new DOMSource(document);
+                                       try (Writer writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
+                                               StreamResult result = new StreamResult(writer);
+                                               transformer.transform(source, result);
+                                       }
                                }
                        }
 
@@ -240,6 +240,8 @@ public class CmsContentRepository implements ProvidedRepository {
                @Override
                public Content get(String path) {
                        Map.Entry<String, ContentProvider> entry = partitions.floorEntry(path);
+                       if (entry == null)
+                               throw new IllegalArgumentException("No entry provider found for " + path);
                        String mountPath = entry.getKey();
                        ContentProvider provider = entry.getValue();
                        String relativePath = path.substring(mountPath.length());