Get XML text returns null if not found.
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 6 Nov 2020 09:16:53 +0000 (10:16 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 6 Nov 2020 09:16:53 +0000 (10:16 +0100)
org.argeo.jcr/src/org/argeo/jcr/JcrxApi.java

index ab34c730ee5d3382dba35b083ad4b8928caa359e..e35495da5a22d875a711aa423d9c2baa944d51fd 100644 (file)
@@ -35,8 +35,15 @@ public class JcrxApi {
        public static String getXmlValue(Node node, String name) {
                try {
                        if (!node.hasNode(name))
-                               throw new IllegalArgumentException("No XML text named " + name);
-                       return node.getNode(name).getNode(Jcr.JCR_XMLTEXT).getProperty(Jcr.JCR_XMLCHARACTERS).getString();
+                               return null;
+                       Node child = node.getNode(name);
+                       if (child.hasNode(Jcr.JCR_XMLTEXT))
+                               return null;
+                       Node xmlText = child.getNode(Jcr.JCR_XMLTEXT);
+                       if (!xmlText.hasProperty(Jcr.JCR_XMLCHARACTERS))
+                               throw new IllegalArgumentException(
+                                               "Node " + xmlText + " has no " + Jcr.JCR_XMLCHARACTERS + " property");
+                       return xmlText.getProperty(Jcr.JCR_XMLCHARACTERS).getString();
                } catch (RepositoryException e) {
                        throw new IllegalStateException("Cannot get " + name + " as XML text", e);
                }