public void testModifyPrivateOwned() throws Exception {
    createTestTypeWithOneToOneAttribute();

    OrmPersistentType ormPersistentType =
        getEntityMappings()
            .addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
    OrmSpecifiedPersistentAttribute ormPersistentAttribute =
        ormPersistentType.addAttributeToXml(
            ormPersistentType.getAttributeNamed("oneToOne"),
            MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
    EclipseLinkOneToOneMapping contextOneToOne =
        (EclipseLinkOneToOneMapping) ormPersistentAttribute.getMapping();
    XmlEntity resourceEntity = (XmlEntity) getXmlEntityMappings().getEntities().get(0);
    XmlOneToOne resourceOneToOne =
        (XmlOneToOne) resourceEntity.getAttributes().getOneToOnes().get(0);

    // check defaults

    assertFalse(resourceOneToOne.isPrivateOwned());
    assertFalse(contextOneToOne.getPrivateOwned().isPrivateOwned());

    // set context private owned  to true, check resource

    contextOneToOne.getPrivateOwned().setPrivateOwned(true);

    assertTrue(resourceOneToOne.isPrivateOwned());
    assertTrue(contextOneToOne.getPrivateOwned().isPrivateOwned());

    // set context private owned back to false, check resource

    contextOneToOne.getPrivateOwned().setPrivateOwned(false);
  }
  public void testModifyConverter() throws Exception {
    createTestEntityWithBasicMapping();

    OrmPersistentType ormPersistentType =
        getEntityMappings()
            .addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
    OrmSpecifiedPersistentAttribute ormPersistentAttribute =
        ormPersistentType.addAttributeToXml(
            ormPersistentType.getAttributeNamed("id"), MappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY);
    EclipseLinkOrmBasicMapping ormBasicMapping =
        (EclipseLinkOrmBasicMapping) ormPersistentAttribute.getMapping();
    EclipseLinkStructConverter ormConverter =
        ormBasicMapping.getConverterContainer().addStructConverter("structConverter", 0);
    XmlStructConverter converterResource =
        ((XmlBasic) getXmlEntityMappings().getEntities().get(0).getAttributes().getBasics().get(0))
            .getStructConverters()
            .get(0);

    assertEquals(null, ormConverter.getConverterClass());
    assertEquals(null, converterResource.getConverter());

    // set converter class in the context model, verify resource model updated
    ormConverter.setConverterClass("foo");
    assertEquals("foo", ormConverter.getConverterClass());
    assertEquals("foo", converterResource.getConverter());

    ormConverter.setConverterClass(null);
    assertEquals(null, ormConverter.getConverterClass());
    assertEquals(null, converterResource.getConverter());
  }
  public void testModifyJoinFetch() throws Exception {
    createTestTypeWithOneToOneAttribute();

    OrmPersistentType ormPersistentType =
        getEntityMappings()
            .addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
    OrmSpecifiedPersistentAttribute ormPersistentAttribute =
        ormPersistentType.addAttributeToXml(
            ormPersistentType.getAttributeNamed("oneToOne"),
            MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
    EclipseLinkOneToOneMapping contextOneToOne =
        (EclipseLinkOneToOneMapping) ormPersistentAttribute.getMapping();
    XmlEntity resourceEntity = (XmlEntity) getXmlEntityMappings().getEntities().get(0);
    XmlOneToOne resourceOneToOne =
        (XmlOneToOne) resourceEntity.getAttributes().getOneToOnes().get(0);

    // check defaults

    assertNull(resourceOneToOne.getJoinFetch());
    assertNull(contextOneToOne.getJoinFetch().getValue());

    // set context join fetch to INNER, check resource

    contextOneToOne.getJoinFetch().setValue(EclipseLinkJoinFetchType.INNER);

    assertEquals(XmlJoinFetchType.INNER, resourceOneToOne.getJoinFetch());
    assertEquals(EclipseLinkJoinFetchType.INNER, contextOneToOne.getJoinFetch().getValue());

    // set context join fetch to OUTER, check resource

    contextOneToOne.getJoinFetch().setValue(EclipseLinkJoinFetchType.OUTER);

    assertEquals(XmlJoinFetchType.OUTER, resourceOneToOne.getJoinFetch());
    assertEquals(EclipseLinkJoinFetchType.OUTER, contextOneToOne.getJoinFetch().getValue());

    // set context join fetch to null, check resource

    contextOneToOne.getJoinFetch().setValue(null);

    assertNull(resourceOneToOne.getJoinFetch());
    assertNull(contextOneToOne.getJoinFetch().getValue());
  }
  public void testSpecifiedMapping() throws Exception {
    createTestEntityOneToOneMapping();
    createTestTargetEntityAddress();

    OrmPersistentType ormPersistentType =
        getEntityMappings()
            .addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
    getEntityMappings()
        .addPersistentType(MappingKeys.ENTITY_TYPE_MAPPING_KEY, PACKAGE_NAME + ".Address");

    ormPersistentType.addAttributeToXml(
        ormPersistentType.getAttributeNamed("address"),
        MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
    assertEquals(2, ormPersistentType.getDefaultAttributesSize());

    OrmSpecifiedPersistentAttribute ormPersistentAttribute =
        ormPersistentType.getSpecifiedAttributes().iterator().next();
    EclipseLinkOrmOneToOneMapping ormOneToOneMapping =
        (EclipseLinkOrmOneToOneMapping) ormPersistentAttribute.getMapping();

    assertEquals("address", ormOneToOneMapping.getName());
    assertNull(ormOneToOneMapping.getSpecifiedFetch());
    assertNull(ormOneToOneMapping.getSpecifiedOptional());
    assertNull(ormOneToOneMapping.getSpecifiedTargetEntity());
    assertNull(ormOneToOneMapping.getRelationship().getMappedByStrategy().getMappedByAttribute());
    assertEquals(FetchType.EAGER, ormOneToOneMapping.getFetch());
    assertEquals(true, ormOneToOneMapping.isOptional());
    // TODO default target entity in xml
    // assertEquals("test.Address", ormOneToOneMapping.getDefaultTargetEntity());

    assertTrue(
        ormOneToOneMapping.getRelationship().getJoinColumnStrategy().getJoinColumnsSize() > 0);

    // TODO default join columns for specified xmlOneToOne mapping
    //		XmlJoinColumn ormJoinColumn = ormOneToOneMapping.defaultJoinColumns().next();
    //		assertNull(ormJoinColumn.getSpecifiedName());
    //		assertNull(ormJoinColumn.getSpecifiedReferencedColumnName());
    //		assertNull(ormJoinColumn.getSpecifiedUnique());
    //		assertNull(ormJoinColumn.getSpecifiedNullable());
    //		assertNull(ormJoinColumn.getSpecifiedInsertable());
    //		assertNull(ormJoinColumn.getSpecifiedUpdatable());
    //		assertNull(ormJoinColumn.getColumnDefinition());
    //		assertNull(ormJoinColumn.getSpecifiedTable());
    //
    //		assertEquals("address", ormJoinColumn.getDefaultName());
    //		assertEquals("address", ormJoinColumn.getDefaultReferencedColumnName());
    //		assertEquals(Boolean.FALSE, ormJoinColumn.getDefaultUnique());
    //		assertEquals(Boolean.TRUE, ormJoinColumn.getDefaultNullable());
    //		assertEquals(Boolean.TRUE, ormJoinColumn.getDefaultInsertable());
    //		assertEquals(Boolean.TRUE, ormJoinColumn.getDefaultUpdatable());
    //		assertEquals(null, ormJoinColumn.getColumnDefinition());
    //		assertEquals(TYPE_NAME, ormJoinColumn.getDefaultTable());

    Cascade cascade = ormOneToOneMapping.getCascade();
    assertFalse(cascade.isAll());
    assertFalse(cascade.isMerge());
    assertFalse(cascade.isPersist());
    assertFalse(cascade.isRemove());
    assertFalse(cascade.isRefresh());

    assertEquals(null, ormOneToOneMapping.getJoinFetch().getValue());
    assertFalse(ormOneToOneMapping.getPrivateOwned().isPrivateOwned());
  }