protected void initialize(MWClassAttribute attribute, String name) {
    super.initialize(attribute, name);

    // TODO wow this is not pretty! and it's copied in other collection mappings
    if (attribute.isValueHolder()) {
      if (attribute.getValueType().isAssignableToMap()) {
        this.containerPolicy = new MWMapContainerPolicy(this);
      } else if (attribute.getValueType().isAssignableToList()) {
        this.containerPolicy = new MWListContainerPolicy(this);
      } else if (attribute.getValueType().isAssignableToSet()) {
        this.containerPolicy = new MWSetContainerPolicy(this);
      } else if (attribute.getValueType().isAssignableToCollection()) {
        this.containerPolicy = new MWCollectionContainerPolicy(this);
      } else { // This is the default in the runtime
        this.containerPolicy = new MWListContainerPolicy(this);
      }
      setUseValueHolderIndirection();
    } else {
      if (attribute.isAssignableToMap()) {
        this.containerPolicy = new MWMapContainerPolicy(this);
      } else if (attribute.isAssignableToList()) {
        this.containerPolicy = new MWListContainerPolicy(this);
      } else if (attribute.isAssignableToSet()) {
        this.containerPolicy = new MWSetContainerPolicy(this);
      } else if (attribute.isAssignableToCollection()) {
        this.containerPolicy = new MWCollectionContainerPolicy(this);
      } else { // This is the default in the runtime
        this.containerPolicy = new MWListContainerPolicy(this);
      }
      setUseTransparentIndirection();
    }
  }
  protected void initializeFromMWIndirectableContainerMapping(
      MWIndirectableContainerMapping oldMapping) {
    super.initializeFromMWIndirectableContainerMapping(oldMapping);

    if (oldMapping.usesTransparentIndirection()) {
      this.setUseTransparentIndirection();
    }
  }
  protected void addProblemsTo(List newProblems) {
    super.addProblemsTo(newProblems);

    this.checkFieldPairs(newProblems);

    this.checkGroupingElement(newProblems);
    this.checkGroupingElementForeignKeys(newProblems);

    this.checkSelectionInteraction(newProblems);
    this.checkDeleteAllInteraction(newProblems);

    this.addUsesTransparentIndirectionWhileMaintainsBiDirectionalRelationship(newProblems);
  }
 protected void initialize(Node parent) {
   super.initialize(parent);
   this.foreignKeyLocation = KEYS_ON_TARGET;
   this.foreignKeyGroupingElement = new MWXmlField(this);
   this.deleteAllInteraction = new MWEisInteraction(this);
 }
 /** @see MWXmlNode#schemaChanged(SchemaChange) */
 public void schemaChanged(SchemaChange change) {
   super.schemaChanged(change);
   this.foreignKeyGroupingElement.schemaChanged(change);
 }
 /** @see MWXmlNode#resolveXpaths */
 public void resolveXpaths() {
   super.resolveXpaths();
   this.foreignKeyGroupingElement.resolveXpaths();
 }
 public void initializeFromMWCompositeCollectionMapping(MWCompositeCollectionMapping oldMapping) {
   super.initializeFromMWCompositeCollectionMapping(oldMapping);
   // getContainerPolicy().initializeFrom(oldMapping.getContainerPolicy());
 }
 protected void addChildrenTo(List children) {
   super.addChildrenTo(children);
   children.add(this.foreignKeyGroupingElement);
   children.add(this.containerPolicy);
   children.add(this.deleteAllInteraction);
 }