Standard Libraries

import default
import semmle.code.java.frameworks.spring.SpringXMLElement

/** Is the superclass of mergable Spring XML elements (list, map). Should not be used 
  * directly (do not use for casts, do not declare variables of this type)*/
/*abstract*/ class SpringMergable extends SpringXMLElement {
  string getMergeRaw() {
    result = this.getAttributeValueWithDefault("merge")
  }
  /** true if the element is merged, taking default-merged values in <beans> into account*/
  predicate isMerged() {
    if this.getMergeRaw() != "default"
    then this.getMergeRaw() = "true"
    else this.getSpringBeanFile().isDefaultMerge()
	}
}