* exceptions. Loosely inspired by Java's <code>Files</code> singleton.
*/
public class Jcr {
-
+ /**
+ * The name of a node which will be serialized as XML text, as per section 7.3.1
+ * of the JCR 2.0 specifications.
+ */
+ public final static String JCR_XMLTEXT = "jcr:xmltext";
+ /**
+ * The name of a property which will be serialized as XML text, as per section
+ * 7.3.1 of the JCR 2.0 specifications.
+ */
+ public final static String JCR_XMLCHARACTERS = "jcr:xmlcharacters";
/**
* <code>jcr:name</code>, when used in another context than
* {@link Property#JCR_NAME}, typically to name a node rather than a property.
*/
public final static String JCR_NAME = "jcr:name";
-
/**
* <code>jcr:path</code>, when used in another context than
* {@link Property#JCR_PATH}, typically to name a node rather than a property.
*/
public final static String JCR_PATH = "jcr:path";
-
/**
* <code>jcr:primaryType</code> with prefix instead of namespace (as in
* {@link Property#JCR_PRIMARY_TYPE}.
}
/**
- * Get property as a {@link String}.
+ * Get property as a {@link String}. If the property is multiple it returns the
+ * first value.
*
* @return the value of
* {@link Node#getProperty(String)}.{@link Property#getString()} or
*/
public static String get(Node node, String property, String defaultValue) {
try {
- if (node.hasProperty(property))
- return node.getProperty(property).getString();
- else
+ if (node.hasProperty(property)) {
+ Property p = node.getProperty(property);
+ if (!p.isMultiple())
+ return p.getString();
+ else {
+ Value[] values = p.getValues();
+ if (values.length == 0)
+ return defaultValue;
+ else
+ return values[0].getString();
+ }
+ } else
return defaultValue;
} catch (RepositoryException e) {
throw new IllegalStateException("Cannot retrieve property " + property + " from " + node);
@SuppressWarnings("unchecked")
public static <T> T getAs(Node node, String property, T defaultValue) {
try {
+ // TODO deal with multiple
if (node.hasProperty(property)) {
Property p = node.getProperty(property);
try {