public void testContainedWithName() throws Exception {
    // test contained annotation value setting/updating

    ICompilationUnit cu = createPackageInfoWithSchemaTypes();
    JavaResourcePackage resourcePackage = buildJavaResourcePackage(cu);

    XmlSchemaTypeAnnotation containedAnnotation =
        (XmlSchemaTypeAnnotation) resourcePackage.getAnnotation(0, JAXB.XML_SCHEMA_TYPE);

    containedAnnotation.setName(TEST_NAME);
    assertEquals(TEST_NAME, containedAnnotation.getName());
    assertSourceContains(
        "@XmlSchemaTypes({@XmlSchemaType(name = \"" + TEST_NAME + "\"),@XmlSchemaType})", cu);

    containedAnnotation.setName(null);
    assertNull(containedAnnotation.getName());
    assertSourceContains("@XmlSchemaTypes({@XmlSchemaType,@XmlSchemaType})", cu);
  }
  public void testContained() throws Exception {
    // test adding/removing/moving

    ICompilationUnit cu = createPackageInfoWithSchemaType();
    JavaResourcePackage resourcePackage = buildJavaResourcePackage(cu);

    assertEquals(1, resourcePackage.getAnnotationsSize(JAXB.XML_SCHEMA_TYPE));

    resourcePackage.addAnnotation(1, JAXB.XML_SCHEMA_TYPE);

    assertEquals(2, resourcePackage.getAnnotationsSize(JAXB.XML_SCHEMA_TYPE));
    assertSourceContains("@XmlSchemaTypes({ @XmlSchemaType, @XmlSchemaType })", cu);

    XmlSchemaTypeAnnotation containedAnnotation1 =
        (XmlSchemaTypeAnnotation) resourcePackage.getAnnotation(0, JAXB.XML_SCHEMA_TYPE);
    containedAnnotation1.setName(TEST_NAME);
    XmlSchemaTypeAnnotation containedAnnotation2 =
        (XmlSchemaTypeAnnotation) resourcePackage.getAnnotation(1, JAXB.XML_SCHEMA_TYPE);
    containedAnnotation2.setName(TEST_NAME_2);
    assertSourceContains(
        "@XmlSchemaTypes({ @XmlSchemaType(name = \""
            + TEST_NAME
            + "\"), @XmlSchemaType(name = \""
            + TEST_NAME_2
            + "\") })",
        cu);

    resourcePackage.moveAnnotation(0, 1, JAXB.XML_SCHEMA_TYPE);
    assertSourceContains(
        "@XmlSchemaTypes({ @XmlSchemaType(name = \""
            + TEST_NAME_2
            + "\"), @XmlSchemaType(name = \""
            + TEST_NAME
            + "\") })",
        cu);

    resourcePackage.removeAnnotation(1, JAXB.XML_SCHEMA_TYPE);
    assertEquals(1, resourcePackage.getAnnotationsSize(JAXB.XML_SCHEMA_TYPE));
    assertSourceContains("@XmlSchemaType(name = \"" + TEST_NAME_2 + "\")", cu);
    assertSourceDoesNotContain("@XmlSchemaTypes", cu);
  }
  public void testName() throws Exception {
    ICompilationUnit cu = createPackageInfoWithSchemaTypeAndName();
    JavaResourcePackage resourcePackage = buildJavaResourcePackage(cu);

    XmlSchemaTypeAnnotation annotation =
        (XmlSchemaTypeAnnotation) resourcePackage.getAnnotation(0, JAXB.XML_SCHEMA_TYPE);
    assertTrue(annotation != null);
    assertEquals(TEST_NAME, annotation.getName());
    assertSourceContains("@XmlSchemaType(name = \"" + TEST_NAME + "\")", cu);

    annotation.setName(TEST_NAME_2);
    assertEquals(TEST_NAME_2, annotation.getName());
    assertSourceContains("@XmlSchemaType(name = \"" + TEST_NAME_2 + "\")", cu);

    annotation.setName(null);
    assertEquals(null, annotation.getName());
    assertSourceContains("@XmlSchemaType", cu);

    annotation.setName(TEST_NAME);
    assertEquals(TEST_NAME, annotation.getName());
    assertSourceContains("@XmlSchemaType(name = \"" + TEST_NAME + "\")", cu);
  }