public void testSetName() throws Exception {
    ICompilationUnit cu = this.createTestAssociationOverrideOnField();
    JavaResourceType resourceType = buildJavaResourceType(cu);
    JavaResourceField resourceField = IterableTools.get(resourceType.getFields(), 0);
    AssociationOverrideAnnotation2_0 associationOverride =
        this.associationOverrideAt(0, resourceField);

    assertNotNull(associationOverride);
    assertEquals(ASSOCIATION_OVERRIDE_NAME, associationOverride.getName());

    associationOverride.setName("Foo");
    assertEquals("Foo", associationOverride.getName());
    assertSourceContains("@AssociationOverride(name = \"Foo\")", cu);
  }
  public void testRemoveJoinColumn() throws Exception {
    ICompilationUnit cu = this.createTestAssociationOverrideWithJoinColumns();
    JavaResourceType resourceType = buildJavaResourceType(cu);
    JavaResourceField resourceField = IterableTools.get(resourceType.getFields(), 0);

    AssociationOverrideAnnotation2_0 associationOverride =
        this.associationOverrideAt(0, resourceField);
    associationOverride.addJoinColumn(0).setName("FOO");

    Iterator<JoinColumnAnnotation> joinColumns = associationOverride.getJoinColumns().iterator();
    assertEquals("FOO", joinColumns.next().getName());
    assertEquals("BAR", joinColumns.next().getName());
    assertNull(joinColumns.next().getName());
    assertEquals(false, joinColumns.hasNext());
    assertSourceContains(
        "@AssociationOverride(name = \""
            + ASSOCIATION_OVERRIDE_NAME
            + "\", joinColumns = {@JoinColumn(name = \"FOO\"), @JoinColumn(name = \"BAR\"), @JoinColumn})",
        cu);

    associationOverride.removeJoinColumn(1);
    joinColumns = associationOverride.getJoinColumns().iterator();
    assertEquals("FOO", joinColumns.next().getName());
    assertNull(joinColumns.next().getName());
    assertEquals(false, joinColumns.hasNext());
    assertSourceContains(
        "@AssociationOverride(name = \""
            + ASSOCIATION_OVERRIDE_NAME
            + "\", joinColumns = {@JoinColumn(name = \"FOO\"), @JoinColumn})",
        cu);

    associationOverride.removeJoinColumn(0);
    joinColumns = associationOverride.getJoinColumns().iterator();
    assertNull(joinColumns.next().getName());
    assertEquals(false, joinColumns.hasNext());
    assertSourceContains(
        "@AssociationOverride(name = \""
            + ASSOCIATION_OVERRIDE_NAME
            + "\", joinColumns = @JoinColumn)",
        cu);

    associationOverride.setName(null);
    associationOverride.removeJoinColumn(0);
    assertSourceDoesNotContain("@AssociationOverride(", cu);
  }