| /* |
| * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0, |
| * or the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| */ |
| |
| // Contributors: |
| // 12/01/2010-2.2 Guy Pelletier |
| // - 331234: xml-mapping-metadata-complete overriden by metadata-complete specification |
| package org.eclipse.persistence.testing.tests.jpa.xml.metadatacomplete; |
| |
| import jakarta.persistence.EntityManager; |
| |
| import junit.framework.*; |
| |
| import org.eclipse.persistence.descriptors.ClassDescriptor; |
| import org.eclipse.persistence.sessions.DatabaseSession; |
| import org.eclipse.persistence.sessions.server.ServerSession; |
| |
| import org.eclipse.persistence.testing.framework.junit.JUnitTestCase; |
| |
| import org.eclipse.persistence.testing.models.jpa.xml.metadatacomplete.Drywall; |
| import org.eclipse.persistence.testing.models.jpa.xml.metadatacomplete.Hammer; |
| //import org.eclipse.persistence.testing.tests.jpa.TestingProperties; |
| import org.eclipse.persistence.testing.models.jpa.xml.metadatacomplete.Screwdriver; |
| |
| /** |
| * The mapping files for this test model are located here: |
| * resource/eclipselink-xml-only-model/metadata-complete-mappings.xml |
| * resource/eclipselink-xml-only-model/xml-mapping-metadata-complete-mappings.xml |
| */ |
| public class EntityMappingsMetadataCompleteJUnitTestCase extends JUnitTestCase { |
| |
| private String m_persistenceUnit; |
| |
| public EntityMappingsMetadataCompleteJUnitTestCase() { |
| super(); |
| } |
| |
| public EntityMappingsMetadataCompleteJUnitTestCase(String name) { |
| super(name); |
| } |
| |
| public static Test suite() { |
| TestSuite suite = new TestSuite("Metadata complete model"); |
| |
| suite.addTest(new EntityMappingsMetadataCompleteJUnitTestCase("testMetadataComplete")); |
| suite.addTest(new EntityMappingsMetadataCompleteJUnitTestCase("testXMLMappingMetadataComplete")); |
| |
| return suite; |
| } |
| |
| /** |
| * Verifies the metadata-complete flag. |
| * - Hammer : metadata-complete=true |
| * - Screwdriver : metadata-complete=false (default) |
| * - Tool : metadata-complete=true |
| * |
| * There is NO {@code <xml-mapping-metadata-mapping>} setting. |
| */ |
| public void testMetadataComplete() { |
| ServerSession session = getServerSession("METADATA_COMPLETE"); |
| |
| /******************** Check the Hammer descriptor *********************/ |
| |
| ClassDescriptor descriptor = session.getDescriptor(Hammer.class); |
| |
| // Verify the descriptor table name. |
| assertFalse("The table annotation from the Hammer class was used.", descriptor.getTableName().equals("IGNORE_HAMMER_TABLE")); |
| |
| // Verify the 'weight' attribute was mapped. |
| assertNotNull("The 'weight' attribute from the Hammer class was NOT mapped.", descriptor.getMappingForAttributeName("weight")); |
| |
| // Verify the 'color' attribute didn't pick up the @Column annotation. |
| assertNotNull("The 'color' attribute from the Hammer class was NOT mapped", descriptor.getMappingForAttributeName("color")); |
| assertFalse("The 'color' attribute used a @Column specification despite a metadata-complete setting of true.", descriptor.getMappingForAttributeName("color").getField().getName().equals("IGNORED_COLOR")); |
| |
| // Verify the 'id' attribute was mapped. |
| assertNotNull("The 'id' attribute from the Tool class was NOT mapped.", descriptor.getMappingForAttributeName("id")); |
| |
| // Verify the 'name' mapping didn't pick up the @Column annotation. |
| assertNotNull("The 'brand' attribute from the Tool class was NOT mapped.", descriptor.getMappingForAttributeName("brand")); |
| assertFalse("The 'brand' attribute used a @Column specification despite a metadata-complete setting of true.", descriptor.getMappingForAttributeName("brand").getField().getName().equals("IGNORED_BRAND")); |
| |
| /****************** Check the Screwdriver descriptor ******************/ |
| |
| descriptor = session.getDescriptor(Screwdriver.class); |
| |
| // Verify the 'type' attribute was mapped. |
| assertNotNull("The 'type' attribute from the Screwdriver class was NOT mapped.", descriptor.getMappingForAttributeName("type")); |
| |
| // Verify the 'style' attribute was mapped and picked up the @Column. |
| assertNotNull("The 'style' attribute from the Screwdriver class was NOT mapped.", descriptor.getMappingForAttributeName("style")); |
| assertTrue("The 'style' attribute did NOT used a @Column specification.", descriptor.getMappingForAttributeName("style").getField().getName().equals("IN_STYLE")); |
| |
| // Verify the 'id' attribute was mapped. |
| assertNotNull("The 'id' attribute from the Tool class was NOT mapped.", descriptor.getMappingForAttributeName("id")); |
| |
| // Verify the 'brand' mapping didn't pick up the @Column annotation. |
| assertNotNull("The 'brand' attribute from the Tool class was NOT mapped.", descriptor.getMappingForAttributeName("brand")); |
| assertFalse("The 'brand' attribute used a @Column specification despite a metadata-complete setting of true.", descriptor.getMappingForAttributeName("brand").getField().getName().equals("IGNORED_BRAND")); |
| |
| /******************** Check the Drywall descriptor ********************/ |
| |
| descriptor = session.getDescriptor(Drywall.class); |
| |
| // Verify the 'length' attribute didn't pick up the @Column annotation. |
| assertNotNull("The 'length' attribute from the Drywall class was NOT mapped", descriptor.getMappingForAttributeName("length")); |
| assertFalse("The 'length' attribute used a @Column specification despite a metadata-complete setting of true.", descriptor.getMappingForAttributeName("length").getField().getName().equals("IGNORED_LENGTH")); |
| |
| // Verify the 'width' attribute didn't pick up the @Column annotation. |
| assertNotNull("The 'width' attribute from the Drywall class was NOT mapped", descriptor.getMappingForAttributeName("width")); |
| assertFalse("The 'width' attribute used a @Column specification despite a metadata-complete setting of true.", descriptor.getMappingForAttributeName("width").getField().getName().equals("IGNORED_WIDTH")); |
| |
| // Verify the 'id' attribute was mapped. |
| assertNotNull("The 'id' attribute from the Material class was NOT mapped.", descriptor.getMappingForAttributeName("id")); |
| |
| // Verify the 'cost' attribute was mapped and picked up the @Column from the mapped superclass marked as metadata complete = false. |
| assertNotNull("The 'cost' attribute from the Meterial class was NOT mapped.", descriptor.getMappingForAttributeName("cost")); |
| assertTrue("The 'cost' attribute did NOT used a @Column specification.", descriptor.getMappingForAttributeName("cost").getField().getName().equals("MUCHO_EXPENSIVE")); |
| } |
| |
| /** |
| * Verifies the xml-mapping-metadata-complete flag. |
| * - Hammer : metadata-complete=false |
| * - Screwdriver : metadata-complete=false (default) |
| * - Tool : metadata-complete=false |
| * |
| * There is {@code <xml-mapping-metadata-mapping>} setting meaning the settings |
| * above should be ignored. |
| */ |
| public void testXMLMappingMetadataComplete() { |
| ServerSession session = getServerSession("XML_MAPPING_METADATA_COMPLETE"); |
| |
| /******************** Check the Hammer descriptor *********************/ |
| |
| ClassDescriptor descriptor = session.getDescriptor(Hammer.class); |
| |
| // Verify the descriptor table name. |
| assertFalse("The table annotation from the Hammer class was used.", descriptor.getTableName().equals("IGNORE_HAMMER_TABLE")); |
| |
| // Verify the 'weight' attribute was mapped. |
| assertNotNull("The 'weight' attribute from the Hammer class was NOT mapped.", descriptor.getMappingForAttributeName("weight")); |
| |
| // Verify the 'color' attribute didn't pick up the @Column annotation |
| assertNotNull("The 'color' attribute from the Hammer class was NOT mapped.", descriptor.getMappingForAttributeName("color")); |
| assertFalse("The 'color' mapping used a @Column specification despite an xml-mapping-metadata-complete setting.", descriptor.getMappingForAttributeName("color").getField().getName().equals("IGNORED_COLOR")); |
| |
| // Verify the 'id' attribute was mapped. |
| assertNotNull("The 'id' attribute from the Tool class was NOT mapped.", descriptor.getMappingForAttributeName("id")); |
| |
| // Verify the 'brand' mapping didn't pick up the @Column annotation |
| assertNotNull("The 'brand' attribute from the Tool class was NOT mapped.", descriptor.getMappingForAttributeName("brand")); |
| assertFalse("The 'brand' attribute used a @Column specification despite an xml-mapping-metadata-complete setting.", descriptor.getMappingForAttributeName("brand").getField().getName().equals("IGNORED_BRAND")); |
| |
| /****************** Check the Screwdriver descriptor ******************/ |
| |
| descriptor = session.getDescriptor(Screwdriver.class); |
| |
| // Verify the 'type' attribute was mapped. |
| assertNotNull("The 'type' attribute from the Screwdriver class was NOT mapped.", descriptor.getMappingForAttributeName("type")); |
| |
| // Verify the 'style' mapping didn't pick up the @Column annotation |
| assertNotNull("The 'style' attribute from the Screwdriver class was NOT mapped.", descriptor.getMappingForAttributeName("style")); |
| assertFalse("The 'style' attribute used a @Column specification despite an xml-mapping-metadata-complete setting.", descriptor.getMappingForAttributeName("style").getField().getName().equals("IN_STYLE")); |
| |
| // Verify the 'id' attribute was mapped. |
| assertNotNull("The 'id' attribute from the Tool class was NOT mapped.", descriptor.getMappingForAttributeName("id")); |
| |
| // Verify the 'brand' mapping didn't pick up the @Column annotation |
| assertNotNull("The 'brand' attribute from the Tool class was NOT mapped.", descriptor.getMappingForAttributeName("brand")); |
| assertFalse("The 'brand' attribute used a @Column specification despite an xml-mapping-metadata-complete setting.", descriptor.getMappingForAttributeName("brand").getField().getName().equals("IGNORED_BRAND")); |
| |
| /******************** Check the Drywall descriptor ********************/ |
| |
| descriptor = session.getDescriptor(Drywall.class); |
| |
| // Verify the 'length' attribute didn't pick up the @Column annotation. |
| assertNotNull("The 'length' attribute from the Drywall class was NOT mapped", descriptor.getMappingForAttributeName("length")); |
| assertFalse("The 'length' attribute used a @Column specification despite an xml-mapping-metadata-complete setting.", descriptor.getMappingForAttributeName("length").getField().getName().equals("IGNORED_LENGTH")); |
| |
| // Verify the 'width' attribute didn't pick up the @Column annotation. |
| assertNotNull("The 'width' attribute from the Drywall class was NOT mapped", descriptor.getMappingForAttributeName("width")); |
| assertFalse("The 'width' attribute used a @Column specification despite an xml-mapping-metadata-complete setting.", descriptor.getMappingForAttributeName("width").getField().getName().equals("IGNORED_WIDTH")); |
| |
| // Verify the 'id' attribute was mapped. |
| assertNotNull("The 'id' attribute from the Material class was NOT mapped.", descriptor.getMappingForAttributeName("id")); |
| |
| // Verify the 'cost' attribute was mapped and picked up the @Column from the mapped superclass marked as metadata complete = false. |
| assertNotNull("The 'cost' attribute from the Meterial class was NOT mapped.", descriptor.getMappingForAttributeName("cost")); |
| assertFalse("The 'cost' attribute did used a @Column specification despite an xml-mapping-metadata-complete setting.", descriptor.getMappingForAttributeName("cost").getField().getName().equals("MUCHO_EXPENSIVE")); |
| } |
| |
| } |