/**
* The name of a node which will be serialized as XML text, as per section 7.3.1
* of the JCR 2.0 specifications.
+ *
+ * @see Workspace#NAME_JCR_XMLTEXT
*/
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.
+ *
+ * @see Workspace#NAME_JCR_XMLCHARACTERS
*/
public final static String JCR_XMLCHARACTERS = "jcr:xmlcharacters";
/**
}
}
+ /**
+ * Whether this node has this property.
+ *
+ * @see Node#hasProperty(String)
+ * @throws JcrException caused by {@link RepositoryException}
+ */
+ public static boolean hasProperty(Node node, String property) {
+ try {
+ return node.hasProperty(property);
+ } catch (RepositoryException e) {
+ throw new JcrException("Cannot check whether " + node + " has property " + property, e);
+ }
+ }
+
/**
* Set a property to the given value, or remove it if the value is
* <code>null</code>.
}
}
+ @SuppressWarnings("unchecked")
public static <T> T getAs(Node node, String property, Class<T> clss) {
if (String.class.isAssignableFrom(clss)) {
return (T) get(node, property);
}
}
+ /**
+ * Retrieve a {@link PropertyType#DATE} property as an {@link Instant}.
+ *
+ * @return the property value, or <code>null</code> if not found.
+ */
+ public static Instant getAsInstant(Node node, String property) {
+ try {
+ if (!node.hasProperty(property))
+ return null;
+ Calendar calendar = node.getProperty(property).getDate();
+ return calendar.getTime().toInstant();
+ } catch (RepositoryException e) {
+ throw new JcrException("Cannot get property " + property + " of " + node + " as an instant.", e);
+ }
+
+ }
+
/**
* Get a multiple property as a list, doing a best effort to cast it as the
* target list.