* XML
*/
/**
- * Set as a subnode which will be exported as an XML element.
+ * Get the XML text of this child node.
*/
public static String getXmlValue(Node node, String name) {
try {
if (!node.hasNode(name))
return null;
Node child = node.getNode(name);
- if (child.hasNode(Jcr.JCR_XMLTEXT))
+ return getXmlValue(child);
+ } catch (RepositoryException e) {
+ throw new IllegalStateException("Cannot get " + name + " as XML text", e);
+ }
+ }
+
+ /**
+ * Get the XML text of this node.
+ */
+ public static String getXmlValue(Node node) {
+ try {
+ if (!node.hasNode(Jcr.JCR_XMLTEXT))
return null;
- Node xmlText = child.getNode(Jcr.JCR_XMLTEXT);
+ Node xmlText = node.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);
+ throw new IllegalStateException("Cannot get " + node + " as XML text", e);
}
}
*/
public static void setXmlValue(Node node, String name, String value) {
try {
- if (node.hasNode(name))
- node.getNode(name).getNode(Jcr.JCR_XMLTEXT).setProperty(Jcr.JCR_XMLCHARACTERS, value);
- else
+ if (node.hasNode(name)) {
+ Node child = node.getNode(name);
+ setXmlValue(node, child, value);
+ } else
node.addNode(name, JcrxType.JCRX_XMLVALUE).addNode(Jcr.JCR_XMLTEXT, JcrxType.JCRX_XMLTEXT)
.setProperty(Jcr.JCR_XMLCHARACTERS, value);
} catch (RepositoryException e) {
- throw new IllegalStateException("Cannot set " + name + " as XML text", e);
+ throw new JcrException("Cannot set " + name + " as XML text", e);
+ }
+ }
+
+ public static void setXmlValue(Node node, Node child, String value) {
+ try {
+ if (!child.hasNode(Jcr.JCR_XMLTEXT))
+ child.addNode(Jcr.JCR_XMLTEXT, JcrxType.JCRX_XMLTEXT);
+ child.getNode(Jcr.JCR_XMLTEXT).setProperty(Jcr.JCR_XMLCHARACTERS, value);
+ } catch (RepositoryException e) {
+ throw new JcrException("Cannot set " + child + " as XML text", e);
}
}