Make JCR set more robust.
[lgpl/argeo-commons.git] / org.argeo.jcr / src / org / argeo / jcr / Jcr.java
index 493e4afe27da3e327e84df69210061c3277882e2..6f0e39d8298759db33affea0dc57d9a69b7bb47f 100644 (file)
@@ -297,8 +297,13 @@ public class Jcr {
         */
        public static void set(Node node, String property, Object value) {
                try {
-                       if (!node.hasProperty(property))
-                               throw new IllegalArgumentException("No property " + property + " in " + node);
+                       if (!node.hasProperty(property)) {
+                               if (value != null)
+                                       node.setProperty(property, value.toString());
+                               return;
+                               // throw new IllegalArgumentException("No property " + property + " in " +
+                               // node);
+                       }
                        Property prop = node.getProperty(property);
                        if (value == null) {
                                prop.remove();
@@ -309,8 +314,12 @@ public class Jcr {
                                prop.setValue((String) value);
                        else if (value instanceof Long)
                                prop.setValue((Long) value);
+                       else if (value instanceof Integer)
+                               prop.setValue(((Integer) value).longValue());
                        else if (value instanceof Double)
                                prop.setValue((Double) value);
+                       else if (value instanceof Float)
+                               prop.setValue(((Float) value).doubleValue());
                        else if (value instanceof Calendar)
                                prop.setValue((Calendar) value);
                        else if (value instanceof BigDecimal)