in src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/PrincipalNameGeneratorImpl.java [136:187]
protected String getValueToUse(Map<String, ?> parameters, String paramName) {
String valueToUse = null;
List<String> values = valueToList(parameters.get(paramName));
if (!values.isEmpty()) {
for (String specialParam : values) {
if (specialParam != null && !specialParam.isEmpty()) {
valueToUse = specialParam;
}
if (valueToUse != null) {
if (valueToUse.isEmpty()) {
// empty value is not usable
valueToUse = null;
} else {
// found value, so stop looping
break;
}
}
}
} else {
// check for a paramName@ValueFrom param
// SLING-130: VALUE_FROM_SUFFIX means take the value of this
// property from a different field
values = valueToList(parameters.get(String.format("%s%s", paramName, SlingPostConstants.VALUE_FROM_SUFFIX)));
if (!values.isEmpty()) {
for (String specialParam : values) {
if (specialParam != null && !specialParam.isEmpty()) {
// retrieve the reference parameter value
List<String> refValues = valueToList(parameters.get(specialParam));
// @ValueFrom params must have exactly one value, else ignored
if (refValues.size() == 1) {
specialParam = refValues.get(0);
if (specialParam != null && !specialParam.isEmpty()) {
valueToUse = specialParam;
}
}
}
if (valueToUse != null) {
if (valueToUse.isEmpty()) {
// empty value is not usable
valueToUse = null;
} else {
// found value, so stop looping
break;
}
}
}
}
}
return valueToUse;
}