in src/main/java/org/apache/sling/jcr/repoinit/impl/NodePropertiesVisitor.java [291:315]
private void setNodeProperties(String nodePath, List<PropertyLine> propertyLines) throws RepositoryException {
log.info("Setting properties on nodePath '{}'", nodePath);
Node n = session.getNode(nodePath);
for (PropertyLine pl : propertyLines) {
final String pName = pl.getPropertyName();
if (needToSetProperty(n, pl)) {
final int newType = PropertyType.valueFromName(pl.getPropertyType().name());
Value[] newValues = convertToValues(pl.getPropertyValues());
Property oldProperty = n.hasProperty(pName) ? n.getProperty(pName) : null;
// only set property if type and/or values change
// note: Node#setProperty() touches the node even if the property value is unchanged
// and thus needs to be explicitly avoided
if(hasPropertyChange(oldProperty, newType, newValues)) {
if (newValues.length == 1) {
n.setProperty(pName, newValues[0], newType);
} else {
n.setProperty(pName, newValues, newType);
}
}
} else {
log.info("Property '{}' already set on path '{}', existing value will not be overwritten in 'default' mode",
pName, nodePath);
}
}
}