code: public static boolean importJsonProperty(ValueFactory factory, Resource resource,
                                               JsonProperty property, MappingRules mapping)
              throws RepositoryException {
          Node node;
          if (resource != null && (node = resource.adaptTo(Node.class)) != null) {
              // change property if new or not only 'extend' is specified
              if ((mapping.changeRule != MappingRules.ChangeRule.extend
                      || node.getProperty(property.name) == null)
                      && mapping.importPropertyFilter.accept(property.name)) {
                  try {
                      setJsonProperty(node, property, mapping);
                      return true;
                  } catch (ConstraintViolationException cvex) {
                      LOG.info(cvex.toString() + " (" + node.getPath() + "@" + property.name + ")");
                  }
              }
          }
          return false;
      }
docs: Changes the property specified by the JSON POJO of the given node if the change rule is appropriate to
  the current state of the node (changes are made only if not only 'extend' is specified as rule or if
  the property is new) and if the property filter of the rules accepts the property.
  ConstraintViolationExceptions are catched if thrown and logged with 'info' level.
  
  @param factory  the ValueFactory to create the JCR value from  the JSON value
  @param resource the resource which stores the property
  @param property the JSON POJO for the property
  @param mapping  the change rules for merging with existing values
  @throws RepositoryException