2
0
Fork 0
mirror of https://github.com/ethauvin/rife2.git synced 2025-05-01 02:58:12 -07:00
rife2/lib/src/main/java/rife/ioc/PropertyValueList.java

65 lines
2 KiB
Java

/*
* Copyright 2001-2022 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
*/
package rife.ioc;
import rife.ioc.exceptions.PropertyValueException;
import java.io.Serial;
import java.util.ArrayList;
/**
* An ordered list of property values.
*
* @author Geert Bevin (gbevin[remove] at uwyn dot com)
* @since 1.0
*/
public class PropertyValueList extends ArrayList<PropertyValue> {
@Serial private static final long serialVersionUID = -7791482346118685259L;
/**
* Interprets the list of property values and make one new property value
* out of it.
*
* @return the new <code>PropertyValue</code> instance
* @since 1.0
*/
public PropertyValue makePropertyValue()
throws PropertyValueException {
// evaluate the current property values series and check if this should be
// interpreted as a text result or as a participant value
PropertyValue result = null;
PropertyValue non_negligible_prop_val = null;
for (var prop_val : this) {
if (!prop_val.isNegligible()) {
if (non_negligible_prop_val != null) {
non_negligible_prop_val = null;
break;
}
non_negligible_prop_val = prop_val;
}
}
if (non_negligible_prop_val != null) {
if (non_negligible_prop_val instanceof PropertyValueObject ||
!non_negligible_prop_val.isStatic()) {
result = non_negligible_prop_val;
} else {
result = new PropertyValueObject(non_negligible_prop_val.getValueString().trim());
}
}
if (null == result) {
var key_text = new StringBuilder();
for (var prop_val : this) {
key_text.append(prop_val.getValueString());
}
result = new PropertyValueObject(key_text.toString().trim());
}
return result;
}
}