String havingValue = annotationAttributes.getString("havingValue");
String[] names = getNames(annotationAttributes);
boolean relaxedNames = annotationAttributes.getBoolean("relaxedNames");
boolean matchIfMissing = annotationAttributes.getBoolean("matchIfMissing");
PropertyResolver resolver = context.getEnvironment();
if (relaxedNames) {
resolver = new RelaxedPropertyResolver(resolver, prefix);
}
List<String> missingProperties = new ArrayList<String>();
List<String> nonMatchingProperties = new ArrayList<String>();
for (String name : names) {
String key = (relaxedNames ? name : prefix + name);
if (resolver.containsProperty(key)) {
if (!isMatch(resolver.getProperty(key), havingValue)) {
nonMatchingProperties.add(name);
}
}
else {
if (!matchIfMissing) {