blob: cc3ccabe6c9026fead2a1d331df6127c5c8dc5b4 [file] [log] [blame]
/*
* Copyright (c) 1998, 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:
// 06/30/2009-2.0 mobrien - finish JPA Metadata API modifications in support
// of the Metamodel implementation for EclipseLink 2.0 release involving
// Map, ElementCollection and Embeddable types on MappedSuperclass descriptors
// - 266912: JPA 2.0 Metamodel API (part of the JSR-317 EJB 3.1 Criteria API)
// 10/15/2009-2.0 mobrien - 266912
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_94:_20091015:_Split_and_Granularize_Test_Suite
// 16/06/2010-2.2 mobrien - 316991: Attribute.getJavaMember() requires reflective getMethod call
// when only getMethodName is available on accessor for attributes of Embeddable types.
// see testAttribute_getJavaMember_BasicType_on_Embeddable_Method()
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_95:_20091017:_Attribute.getJavaMember.28.29_returns_null_for_a_BasicType_on_a_MappedSuperclass_because_of_an_uninitialized_accessor
// 30/11/2010-2.2 mobrien - 300626: Nested Embeddable testing
package org.eclipse.persistence.testing.tests.jpa.metamodel;
import java.lang.reflect.Field;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.math.BigInteger;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.metamodel.Attribute;
import jakarta.persistence.metamodel.Bindable;
import jakarta.persistence.metamodel.CollectionAttribute;
import jakarta.persistence.metamodel.EmbeddableType;
import jakarta.persistence.metamodel.EntityType;
import jakarta.persistence.metamodel.IdentifiableType;
import jakarta.persistence.metamodel.ListAttribute;
import jakarta.persistence.metamodel.ManagedType;
import jakarta.persistence.metamodel.MapAttribute;
import jakarta.persistence.metamodel.MappedSuperclassType;
import jakarta.persistence.metamodel.Metamodel;
import jakarta.persistence.metamodel.PluralAttribute;
import jakarta.persistence.metamodel.SetAttribute;
import jakarta.persistence.metamodel.SingularAttribute;
import jakarta.persistence.metamodel.Type;
import jakarta.persistence.metamodel.Attribute.PersistentAttributeType;
import jakarta.persistence.metamodel.PluralAttribute.CollectionType;
import jakarta.persistence.metamodel.Type.PersistenceType;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.persistence.descriptors.ClassDescriptor;
import org.eclipse.persistence.internal.jpa.metamodel.AttributeImpl;
import org.eclipse.persistence.internal.jpa.metamodel.BasicTypeImpl;
import org.eclipse.persistence.internal.jpa.metamodel.EmbeddableTypeImpl;
import org.eclipse.persistence.internal.jpa.metamodel.EntityTypeImpl;
import org.eclipse.persistence.internal.jpa.metamodel.ManagedTypeImpl;
import org.eclipse.persistence.internal.jpa.metamodel.MapAttributeImpl;
import org.eclipse.persistence.internal.jpa.metamodel.MappedSuperclassTypeImpl;
import org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl;
import org.eclipse.persistence.internal.jpa.metamodel.PluralAttributeImpl;
import org.eclipse.persistence.internal.jpa.metamodel.SingularAttributeImpl;
import org.eclipse.persistence.internal.jpa.metamodel.TypeImpl;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.testing.models.jpa.metamodel.ArrayProcessor;
import org.eclipse.persistence.testing.models.jpa.metamodel.Board;
import org.eclipse.persistence.testing.models.jpa.metamodel.CPU;
import org.eclipse.persistence.testing.models.jpa.metamodel.CPUEmbeddedId;
import org.eclipse.persistence.testing.models.jpa.metamodel.Computer;
import org.eclipse.persistence.testing.models.jpa.metamodel.Core;
import org.eclipse.persistence.testing.models.jpa.metamodel.Corporation;
import org.eclipse.persistence.testing.models.jpa.metamodel.Designer;
import org.eclipse.persistence.testing.models.jpa.metamodel.EmbeddedPK;
import org.eclipse.persistence.testing.models.jpa.metamodel.Enclosure;
import org.eclipse.persistence.testing.models.jpa.metamodel.EnclosureIdClassPK;
import org.eclipse.persistence.testing.models.jpa.metamodel.GalacticPosition;
import org.eclipse.persistence.testing.models.jpa.metamodel.HardwareDesigner;
import org.eclipse.persistence.testing.models.jpa.metamodel.MSRootPropertyAccess;
import org.eclipse.persistence.testing.models.jpa.metamodel.MS_MS_Entity_Center;
import org.eclipse.persistence.testing.models.jpa.metamodel.MS_MS_Entity_Leaf;
import org.eclipse.persistence.testing.models.jpa.metamodel.MS_MS_Entity_Root;
import org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer;
import org.eclipse.persistence.testing.models.jpa.metamodel.Memory;
import org.eclipse.persistence.testing.models.jpa.metamodel.MultiCoreCPU;
import org.eclipse.persistence.testing.models.jpa.metamodel.Observation;
import org.eclipse.persistence.testing.models.jpa.metamodel.ObservationDetail;
import org.eclipse.persistence.testing.models.jpa.metamodel.Person;
import org.eclipse.persistence.testing.models.jpa.metamodel.Position;
import org.eclipse.persistence.testing.models.jpa.metamodel.Processor;
import org.eclipse.persistence.testing.models.jpa.metamodel.VectorProcessor;
import org.eclipse.persistence.testing.models.jpa.metamodel.WithInner;
import org.eclipse.persistence.testing.framework.junit.JUnitTestCase;
/**
* These tests verify the JPA 2.0 Metamodel API.
* The framework is as follows:
* - initialize persistence unit
* - start a transaction
* - persist some entities to test
* - verify metamodel
* - delete test entities created above (to reset the database)
* - close persistence unit
*
* API Usage
* There are three ways to query using the Criteria API which can wrap the Metamodel API
* 1) Static canonical metamodel class model for type safe queries - these are the _Underscore design time classes
* 2) Dynamic metamodel class model for type safe queries
* - we use generics and pass in both the return type and the type containing the return type
* 3) String attribute references for non-type safe queries
* - see p.262 of the JPA 2.0 specification section 6.7
* - there may be type or generic usage compiler warnings that
* the user will need to workaround when using this non-type-safe query in a type-safe environment.
*
* This enhancement deals only with # 2) Dynamic metamodel query generation.
*
*/
public class MetamodelMetamodelTest extends MetamodelTest {
public static final int METAMODEL_ALL_ATTRIBUTES_SIZE = 150;//6;
// Note: Since BasicTypes are lazy - loaded into the metamodel-types Map - this test must preceed any test that verifies all BasicType objects like "testIdentifiableType_getIdType_Method"
public static final int METAMODEL_ALL_TYPES = 52;
public static final int METAMODEL_MANUFACTURER_DECLARED_TYPES = 28;
// Get # of processor cores (hard cores + hyperthreaded cores)
public static final int numberProcessingUnits = Runtime.getRuntime().availableProcessors();
public MetamodelMetamodelTest() {
super();
}
public MetamodelMetamodelTest(String name) {
super(name);
}
public static Test suite() {
TestSuite suite = new TestSuite("MetamodelMetamodelTest");
/**
* 300051: EmbeddedId directly on MappedSuperclass
* In the following 2 tests we verify that when an EmbeddedId is on a MappedSuperclass - we do not
* use the non-persisting MAPPED_SUPERCLASS_RESERVED_PK_NAME PK field.
* Normally when the MappedSuperclass is part of an inheritance hierarchy of the form MS->MS->E,
* where there is an PK Id on the root Entity E, we need to add this key solely for metadata processing to complete.
* Why? because even though we treat MappedSuperclass objects as a RelationalDescriptor - we only persist
* RelationalDescriptor objects that relate to concrete Entities.
*/
if (! JUnitTestCase.isJPA10()) {
suite.addTest(new MetamodelMetamodelTest("testMetamodelEmbeddedIdDirectlyOnMappedSuperclassRootPassesValidation"));
// Note: Since BasicTypes are lazy - loaded into the metamodel-types Map - this test must preceed any test that verifies all BasicType objects like "testIdentifiableType_getIdType_Method"
suite.addTest(new MetamodelMetamodelTest("testTransientNonEntityNonMappedSuperclass_SuperclassOfEntity_Exists_as_BasicType"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getAttribute_of_TransientNonEntityNonMappedSuperclass_SuperclassOfEntity_throws_IAE"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getPersistentAttributeType_BASIC_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getPersistentAttributeType_EMBEDDED_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getPersistentAttributeType_ONE_TO_ONE_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getPersistentAttributeType_ONE_TO_MANY_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getPersistentAttributeType_MANY_TO_MANY_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getPersistentAttributeType_MANY_TO_ONE_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getPersistentAttributeType_ELEMENT_COLLECTION_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getName_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getDeclaringType_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaType_BasicType_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaType_ManagedType_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaMember_BasicType_on_MappedSuperclass_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaMember_BasicType_FieldAccess_on_Embeddable_Method")); // 316991
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaMember_BasicType_PropertyAccess_on_Embeddable_Method")); // 316991
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaMember_BasicType_on_Entity_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaMember_EntityType_FieldLevel_on_Entity_Method")); // 316991
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaMember_EntityType_FieldLevel_on_MappedSuperclass_Method")); // 316991
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaMember_EntityType_PropertyMethodLevel_on_Entity_Method")); // 316991
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaMember_EntityType_PropertyMethodLevel_on_MappedSuperclass_Method")); // 316991
suite.addTest(new MetamodelMetamodelTest("testAttribute_getJavaMember_ManagedType_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_isAssociation_on_Plural_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_isAssociation_on_Singular_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_isCollection_false_Method"));
suite.addTest(new MetamodelMetamodelTest("testAttribute_isCollection_true_Method"));
suite.addTest(new MetamodelMetamodelTest("testBasicType"));
suite.addTest(new MetamodelMetamodelTest("testBindable_getBindableType_Method"));
suite.addTest(new MetamodelMetamodelTest("testBindable_getBindableJavaType_Method"));
suite.addTest(new MetamodelMetamodelTest("testEmbeddableType"));
suite.addTest(new MetamodelMetamodelTest("testNestedEmbeddableType")); // 300626
suite.addTest(new MetamodelMetamodelTest("testEntityType"));
suite.addTest(new MetamodelMetamodelTest("testEntityAttribute_getBindableJavaType_Method"));
// Note: Since BasicTypes are lazy - loaded into the metamodel-types Map - this test must proceed any test that first gets the Position class BasicType object - see like "testTransientNonEntityNonMappedSuperclass_SuperclassOfEntity_Exists_as_BasicType"
// You will get a lower number here - if only this single test is run via the Testing Browser
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getIdType_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getIdClassAttributes_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getIdClassAttributesAcrossMappedSuperclassChain_Method")); // 288792
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_hasVersionAttribute_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_hasSingleIdAttribute_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getSupertype_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getDeclaredVersion_exists_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getDeclaredVersion_exists_above_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getDeclaredVersion_does_not_exist_at_all_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getVersion_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getDeclaredId_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getId_Method"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getDeclaredId_normal_execution_attribute_is_declared"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getDeclaredId_variant_execution_attribute_is_declared_above"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getDeclaredId_variant_execution_attribute_is_not_declared_at_all"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getDeclaredId_normal_execution_attribute_is_declared"));
suite.addTest(new MetamodelMetamodelTest("testIdentifiableType_getIdType_handles_possible_null_cmppolicy"));
suite.addTest(new MetamodelMetamodelTest("testListAttribute"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getAttributes_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredAttributes_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getSingularAttribute_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredSingularAttribute_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getSingularAttributes_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredSingularAttributes_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getCollection_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredCollection_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getSet_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredSet_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getList_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredList_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getMap_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredMap_Type_param_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredMap_Type_param_not_found_iae_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredMap_Type_param_declared_above_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getPluralAttributes_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredPluralAttributes_internal_entity_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredPluralAttributes_root_entity_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredPluralAttributes_root_mappedSuperclass_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getAttribute_on_Entity_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getAttribute_on_MappedSuperclass_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getAttribute_doesNotExist_on_Entity_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getAttribute_doesNotExist_on_MappedSuperclass_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredAttribute_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredListAttribute_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredAttribute_above_throws_iae_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredAttribute_doesNotExist_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getSingularAttribute_BASIC_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getSingularAttribute_EMBEDDED_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredSingularAttribute_on_Entity_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredSingularAttribute_on_MappedSuperclass_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getCollection_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredCollection_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getSet_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredSet_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getList_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredList_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getMap_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_getDeclaredMap_Method"));
suite.addTest(new MetamodelMetamodelTest("testManagedType_variantCases"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyJavaType_UC0_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyJavaType_UC1a_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyJavaType_UC2_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyJavaType_UC4_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyJavaType_UC7_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyJavaType_UC8_Method"));
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_86:_20090921:_Handle_Embeddable_Type_keyType_in_MapAttributeImpl_constructor
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyJavaType_UC9_DI86_Embeddable_IdClass_keyType_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_UC0_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_UC1a_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_UC2_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_UC4_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_UC7_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_UC8_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_UC9_DI86_Embeddable_IdClass_keyType_Method"));
// These 3 test verify the workaround for 294811
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_294811_UC10_DI86_Embeddable_IdClass_keyType_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_294811_UC12_DI86_Embedded_keyType_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getKeyType_294811_UC13_DI86_Embedded_keyType_Method"));
suite.addTest(new MetamodelMetamodelTest("testMapAtributeElementTypeWhenMapKeySetButNameAttributeIsDefaulted"));
suite.addTest(new MetamodelMetamodelTest("testMapAtributeElementTypeWhenMapKeySetAndNameAttributeSet"));
// Pending implementation
//suite.addTest(new MetamodelMetamodelTest("testMapAtributeElementTypeWhenMapKeyNotSet_MapKeyColumnSet"));
//suite.addTest(new MetamodelMetamodelTest("testMapAtributeElementTypeWhenMapKeyNotSet_MapKeyColumnSet")); // JPA 2.0 specific
suite.addTest(new MetamodelMetamodelTest("testMappedSuperclassType"));
suite.addTest(new MetamodelMetamodelTest("testMetamodel_entity_Method"));
suite.addTest(new MetamodelMetamodelTest("testMetamodel_embeddable_Method"));
suite.addTest(new MetamodelMetamodelTest("testMetamodel_managedType_Method"));
suite.addTest(new MetamodelMetamodelTest("testMetamodel_getEntities_Method"));
suite.addTest(new MetamodelMetamodelTest("testMetamodel_getManagedTypes_Method"));
suite.addTest(new MetamodelMetamodelTest("testMetamodel_getEmbeddables_Method"));
suite.addTest(new MetamodelMetamodelTest("testPluralAttribute_CollectionType_enum"));
suite.addTest(new MetamodelMetamodelTest("testPluralAttribute_getCollectionType_Method"));
suite.addTest(new MetamodelMetamodelTest("testPluralAttribute_getElementType_Method"));
suite.addTest(new MetamodelMetamodelTest("testPluralAttribute_getBindableJavaType_Method"));
suite.addTest(new MetamodelMetamodelTest("testSetAttribute"));
suite.addTest(new MetamodelMetamodelTest("testSingularAttribute_isOptional_Method"));
suite.addTest(new MetamodelMetamodelTest("testSingularAttribute_isId_Method"));
suite.addTest(new MetamodelMetamodelTest("testSingularAttribute_isVersion_Method"));
suite.addTest(new MetamodelMetamodelTest("testSingularAttribute_getBindableType_Method"));
suite.addTest(new MetamodelMetamodelTest("testSingularAttribute_getBindableJavaType_Method"));
suite.addTest(new MetamodelMetamodelTest("testSingularAttribute_getJavaType_Method"));
suite.addTest(new MetamodelMetamodelTest("testSingularAttribute_getType_Method"));
suite.addTest(new MetamodelMetamodelTest("testToStringOverrides"));
suite.addTest(new MetamodelMetamodelTest("testType_PersistenceType_enum"));
suite.addTest(new MetamodelMetamodelTest("testType_getPersistenceType_Method"));
suite.addTest(new MetamodelMetamodelTest("testType_getJavaType_Method"));
suite.addTest(new MetamodelMetamodelTest("testOutOfSpecificationInternalAPI"));
suite.addTest(new MetamodelMetamodelTest("testMapAttribute_getDeclaredPluralAttributesForEmbeddable"));
// Not implemented yet
//suite.addTest(new MetamodelMetamodelTest("testObscureInvalidStateUnitTests"));
}
return suite;
}
@Override
public void setUp() {
super.setUp();
}
/**
* Perform a test by "Not" caching the EMF and letting the test close the EMF to
* verify variant use cases that may throw an IAE on a closed EntityManger
*/
private EntityManager privateTestSetup(boolean overrideEMFCachingForTesting) {
EntityManagerFactory emf = null;
EntityManager em = null;
boolean exceptionThrown = false;
Metamodel metamodel = null;
try {
emf = initialize(overrideEMFCachingForTesting);
em = emf.createEntityManager();
metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
} catch (Exception e) {
e.printStackTrace();
cleanup(em);
}
return em;
}
private EntityManager privateTestSetup() {
return privateTestSetup(false);
}
private void privateTestTeardown() {
}
// 300051: Test is that the class passes processing in the testing browser - verify that the model has loaded here as well
public void testMetamodelEmbeddedIdDirectlyOnMappedSuperclassRootPassesValidation() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Verify our classes involved in an @EmbeddedId on a @MappedSuperclass loaded
ManagedType<CPU> msCPU = metamodel.managedType(CPU.class);
assertNotNull(msCPU);
assertEquals(Type.PersistenceType.MAPPED_SUPERCLASS, msCPU.getPersistenceType());
ManagedType<MultiCoreCPU> eMultiCoreCPU = metamodel.managedType(MultiCoreCPU.class);
assertNotNull(eMultiCoreCPU);
assertEquals(Type.PersistenceType.ENTITY, eMultiCoreCPU.getPersistenceType());
ManagedType<Core> eCore = metamodel.managedType(Core.class);
assertNotNull(eCore);
assertEquals(Type.PersistenceType.ENTITY, eCore.getPersistenceType());
ManagedType<CPUEmbeddedId> embedCPUEmbeddedId = metamodel.managedType(CPUEmbeddedId.class);
assertNotNull(embedCPUEmbeddedId);
assertEquals(Type.PersistenceType.EMBEDDABLE, embedCPUEmbeddedId.getPersistenceType());
// 316991: DI 95: Handle case where getMethod is not set - but getMethodName is
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_95:_20091017:_Attribute.getJavaMember.28.29_returns_null_for_a_BasicType_on_a_MappedSuperclass_because_of_an_uninitialized_accessor
Attribute embeddedAttribute = embedCPUEmbeddedId.getAttribute("pk_part1");
assertNotNull(embeddedAttribute);
Member aMember = embeddedAttribute.getJavaMember();
assertNotNull(aMember);
assertNotNull("id java member is null", aMember);
assertTrue("id attribute java member is not an instance of Method", aMember instanceof Method);
assertEquals("getPk_part1", aMember.getName());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
/**
* There is no simple way to test the predeploy() for this issue - however we can
* verify that the MS - MS - Entity chain is loaded correctly.
*
*/
public void testValidation_relaxed_for_composite_pk_on_mappedSuperclass_chain() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
ManagedType<Person> msPerson = metamodel.managedType(Person.class);
assertNotNull(msPerson);
assertEquals(Type.PersistenceType.MAPPED_SUPERCLASS, msPerson.getPersistenceType());
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_93:_20091014:_Single_PK_support_in_IdentifiableTypeImpl.getIdType.28.29_does_not_fully_handle_a_null_CMPPolicy_on_the_Descriptor
public void testIdentifiableType_getIdType_handles_possible_null_cmppolicy() {
boolean exceptionThrown = false;
EntityManager em = null;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
boolean expectedIAExceptionThrown = false;
Type<?> personIdType = null;
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
personIdType = msPerson_.getIdType();
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
assertNotNull(personIdType);
assertEquals(PersistenceType.BASIC, personIdType.getPersistenceType());
assertEquals(Integer.class, personIdType.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting no exception
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur on getIdType() here.", exceptionThrown);
}
}
/**
* These tests are for states that should never be reached by API implementors.
*/
// TODO: This is not testing anything yet.
public void testObscureInvalidStateUnitTests() {
boolean exceptionThrown = false;
EntityManager em = null;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Test toString() for a Type without a javaType attribute
//Type invalidType = new BasicTypeImpl(null);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testIdentifiableType_getDeclaredId_variant_execution_attribute_is_declared_above() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
ManagedType<Manufacturer> entityManufacturer_ = metamodel.managedType(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
/**
* Return the attribute that corresponds to the id attribute
* declared by the entity or mapped superclass.
* @param type the type of the represented declared id attribute
* @return declared id attribute
* @throws IllegalArgumentException if id attribute of the given
* type is not declared in the identifiable type or if
* the identifiable type has an id class
*/
//<Y> SingularAttribute<X, Y> getDeclaredId(Class<Y> type);
// Not declared - invalid - IAE thrown (actually declared 2 levels above in "Person")
Attribute idAttribute = ((IdentifiableType)entityManufacturer_).getDeclaredId(Integer.class);
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertTrue("non-declared attribute should throw an IAE", exceptionThrown);
}
}
// TODO: This is not testing anything yet.
public void testIdentifiableType_getDeclaredId_variant_execution_attribute_is_not_declared_at_all() {
}
public void testIdentifiableType_getDeclaredId_normal_execution_attribute_is_declared() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
ManagedType<Person> msPerson = metamodel.managedType(Person.class);
assertNotNull(msPerson);
assertEquals(Type.PersistenceType.MAPPED_SUPERCLASS, msPerson.getPersistenceType());
/**
* Return the attribute that corresponds to the id attribute
* declared by the entity or mapped superclass.
* @param type the type of the represented declared id attribute
* @return declared id attribute
* @throws IllegalArgumentException if id attribute of the given
* type is not declared in the identifiable type or if
* the identifiable type has an id class
*/
//<Y> SingularAttribute<X, Y> getDeclaredId(Class<Y> type);
// declared - valid
Attribute idAttribute = ((IdentifiableType)msPerson).getDeclaredId(Integer.class);
assertNotNull(idAttribute);
assertEquals(Integer.class, idAttribute.getJavaType());
// declared and valid
//*********************************************/
// FUTURE: Require a version on a MappedSuperclass
//assertNotNull(msPerson1_.getDeclaredId(Integer.class)); - keep commented
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getPersistentAttributeType_BASIC_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
// Actual Test Case
/*public static enum PersistentAttributeType {
MANY_TO_ONE, ONE_TO_ONE, BASIC, EMBEDDED,
MANY_TO_MANY, ONE_TO_MANY, ELEMENT_COLLECTION
}*/
/**
* Return the persistent attribute type for the attribute.
* @return persistent attribute type
*/
//PersistentAttributeType getPersistentAttributeType();
Attribute anAttribute = entityManufacturer_.getAttribute("anInt");
assertNotNull(anAttribute);
assertEquals(int.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.BASIC, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getPersistentAttributeType_ONE_TO_ONE_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Actual Test Case
/*public static enum PersistentAttributeType {
MANY_TO_ONE, ONE_TO_ONE, BASIC, EMBEDDED,
MANY_TO_MANY, ONE_TO_MANY, ELEMENT_COLLECTION
}*/
/**
* Return the persistent attribute type for the attribute.
* @return persistent attribute type
*/
//PersistentAttributeType getPersistentAttributeType();
Attribute anAttribute = entityComputer_.getAttribute("location");
assertNotNull(anAttribute);
assertEquals(GalacticPosition.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.ONE_TO_ONE, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getPersistentAttributeType_ONE_TO_MANY_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
// Actual Test Case
/*public static enum PersistentAttributeType {
MANY_TO_ONE, ONE_TO_ONE, BASIC, EMBEDDED,
MANY_TO_MANY, ONE_TO_MANY, ELEMENT_COLLECTION
}*/
/**
* Return the persistent attribute type for the attribute.
* @return persistent attribute type
*/
//PersistentAttributeType getPersistentAttributeType();
Attribute anAttribute = entityManufacturer_.getAttribute("computers");
assertNotNull(anAttribute);
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
Bindable aPluralAttribute = entityManufacturer_.getSet("computers");
assertEquals(Computer.class, aPluralAttribute.getBindableJavaType());
assertEquals(Set.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// TODO: This is not testing anything yet.
public void testAttribute_getPersistentAttributeType_MANY_TO_MANY_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
/*public static enum PersistentAttributeType {
MANY_TO_ONE, ONE_TO_ONE, BASIC, EMBEDDED,
MANY_TO_MANY, ONE_TO_MANY, ELEMENT_COLLECTION
}*/
/**
* Return the persistent attribute type for the attribute.
* @return persistent attribute type
*/
//PersistentAttributeType getPersistentAttributeType();
// note: not implemented yet - need a manyToMany in the model
//assertEquals(PersistentAttributeType.MANY_TO_MANY, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getPersistentAttributeType_MANY_TO_ONE_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Board> entityBoard_ = (EntityTypeImpl)metamodel.entity(Board.class);
assertNotNull(entityBoard_);
assertEquals(Type.PersistenceType.ENTITY, entityBoard_.getPersistenceType());
// Actual Test Case
/*public static enum PersistentAttributeType {
MANY_TO_ONE, ONE_TO_ONE, BASIC, EMBEDDED,
MANY_TO_MANY, ONE_TO_MANY, ELEMENT_COLLECTION
}*/
/**
* Return the persistent attribute type for the attribute.
* @return persistent attribute type
*/
//PersistentAttributeType getPersistentAttributeType();
Attribute anAttribute = entityBoard_.getAttribute("computer");
assertNotNull(anAttribute);
assertEquals(Computer.class, anAttribute.getJavaType());
// Note: internally our MANY_TO_ONE is treated as a ONE_TO_ONE - although with a DB constraint
assertEquals(PersistentAttributeType.MANY_TO_ONE, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// TODO: This is not testing anything yet.
public void testAttribute_getPersistentAttributeType_ELEMENT_COLLECTION_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
// Actual Test Case
/*public static enum PersistentAttributeType {
MANY_TO_ONE, ONE_TO_ONE, BASIC, EMBEDDED,
MANY_TO_MANY, ONE_TO_MANY, ELEMENT_COLLECTION
}*/
/**
* Return the persistent attribute type for the attribute.
* @return persistent attribute type
*/
//PersistentAttributeType getPersistentAttributeType();
Attribute anAttribute = entityManufacturer_.getAttribute("computers");
// FUTURE: Not Implemented
//assertNotNull(anAttribute);
//assertEquals(Computer.class, anAttribute.getJavaType());
//assertEquals(PersistentAttributeType.ELEMENT_COLLECTION, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getPersistentAttributeType_EMBEDDED_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<GalacticPosition> entityGalacticPosition_ = (EntityTypeImpl)metamodel.entity(GalacticPosition.class);
assertNotNull(entityGalacticPosition_);
assertEquals(Type.PersistenceType.ENTITY, entityGalacticPosition_.getPersistenceType());
// Actual Test Case
/*public static enum PersistentAttributeType {
MANY_TO_ONE, ONE_TO_ONE, BASIC, EMBEDDED,
MANY_TO_MANY, ONE_TO_MANY, ELEMENT_COLLECTION
}*/
/**
* Return the persistent attribute type for the attribute.
* @return persistent attribute type
*/
//PersistentAttributeType getPersistentAttributeType();
Attribute anAttribute = entityGalacticPosition_.getAttribute("primaryKey");
assertNotNull(anAttribute);
assertEquals(EmbeddedPK.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.EMBEDDED, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getName_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
/**
* Return the name of the attribute.
* @return name
*/
//String getName();
ManagedType<Person> msPerson = metamodel.managedType(Person.class);
assertNotNull(msPerson);
assertEquals(Type.PersistenceType.MAPPED_SUPERCLASS, msPerson.getPersistenceType());
Attribute idAttribute = ((IdentifiableType)msPerson).getDeclaredId(Integer.class);
assertNotNull(idAttribute);
assertEquals(Integer.class, idAttribute.getJavaType());
assertEquals("id", idAttribute.getName());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getDeclaringType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
/**
* Return the managed type representing the type in which
* the attribute was declared.
* @return declaring type
*/
//ManagedType<X> getDeclaringType();
// Test case
Attribute anAttribute = entityManufacturer_.getDeclaredAttribute("hardwareDesignersMapUC4");
ManagedType aManagedType = anAttribute.getDeclaringType();
assertEquals(entityManufacturer_, aManagedType);
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getJavaType_BasicType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
/**
* Return the Java type of the represented attribute.
* @return Java type
*/
//Class<Y> getJavaType();
ManagedType<Person> msPerson = metamodel.managedType(Person.class);
assertNotNull(msPerson);
assertEquals(Type.PersistenceType.MAPPED_SUPERCLASS, msPerson.getPersistenceType());
Attribute idAttribute = ((IdentifiableType)msPerson).getDeclaredId(Integer.class);
assertNotNull(idAttribute);
assertEquals(Integer.class, idAttribute.getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getJavaType_ManagedType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
/**
* Return the Java type of the represented attribute.
* @return Java type
*/
//Class<Y> getJavaType();
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
Attribute anAttribute = entityManufacturer_.getAttribute("computers");
assertNotNull(anAttribute);
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
Bindable aPluralAttribute = entityManufacturer_.getSet("computers");
assertEquals(Computer.class, aPluralAttribute.getBindableJavaType());
assertEquals(Set.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getJavaMember_BasicType_on_MappedSuperclass_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
ManagedType<Person> msPerson = metamodel.managedType(Person.class);
assertNotNull(msPerson);
assertEquals(Type.PersistenceType.MAPPED_SUPERCLASS, msPerson.getPersistenceType());
/**
* Return the java.lang.reflect.Member for the represented
* attribute.
* @return corresponding java.lang.reflect.Member
*/
//java.lang.reflect.Member getJavaMember();
Attribute idAttribute = ((IdentifiableType)msPerson).getDeclaredId(Integer.class);
assertNotNull(idAttribute);
assertEquals(Integer.class, idAttribute.getJavaType());
// For primitive and basic types - we should not return null - the attributeAccessor on the MappedSuperclass is not initialized - see
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_95:_20091017:_Attribute.getJavaMember.28.29_returns_null_for_a_BasicType_on_a_MappedSuperclass_because_of_an_uninitialized_accessor
Member aMember = idAttribute.getJavaMember();
assertNotNull("id java member is null", aMember);
assertTrue("id attribute java member is not an instance of Field", aMember instanceof Field);
assertEquals("id", aMember.getName());
assertNotNull(((Field)aMember).getType());
assertEquals(Integer.class.getName(), ((Field)aMember).getType().getName());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// 316991: handle missing getMethod on embeddables by using the getMethodName
public void testAttribute_getJavaMember_BasicType_FieldAccess_on_Embeddable_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
/**
* Return the java.lang.reflect.Member for the represented attribute.
* @return corresponding java.lang.reflect.Member
*/
//java.lang.reflect.Member getJavaMember();
ManagedType<EmbeddedPK> embedableAttribute = metamodel.managedType(EmbeddedPK.class);
assertNotNull(embedableAttribute);
assertEquals(Type.PersistenceType.EMBEDDABLE, embedableAttribute.getPersistenceType());
// 316991: DI 95: Handle case where getMethod is not set - but getMethodName is
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_95:_20091017:_Attribute.getJavaMember.28.29_returns_null_for_a_BasicType_on_a_MappedSuperclass_because_of_an_uninitialized_accessor
Attribute embeddedAttribute = embedableAttribute.getAttribute("pk_part1");
assertNotNull(embeddedAttribute);
// The following line exercises the 2nd field part for non-MappedSuperclasses in getJavaMember()
Member aMember = embeddedAttribute.getJavaMember();
assertNotNull(aMember); // Fix for missing getMethod in 316991
assertNotNull("pk_part1 java member is null", aMember);
assertTrue("pk_part1 attribute java member is not an instance of Method", aMember instanceof Field);
assertEquals("pk_part1", aMember.getName());
assertNotNull(((Field)aMember).getType());
assertEquals(int.class.getName(), ((Field)aMember).getType().getName());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// 316991: handle missing getMethod on embeddables by using the getMethodName
public void testAttribute_getJavaMember_BasicType_PropertyAccess_on_Embeddable_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
/**
* Return the java.lang.reflect.Member for the represented attribute.
* @return corresponding java.lang.reflect.Member
*/
//java.lang.reflect.Member getJavaMember();
ManagedType<CPUEmbeddedId> embedCPUEmbeddedId = metamodel.managedType(CPUEmbeddedId.class);
assertNotNull(embedCPUEmbeddedId);
assertEquals(Type.PersistenceType.EMBEDDABLE, embedCPUEmbeddedId.getPersistenceType());
// 316991: DI 95: Handle case where getMethod is not set - but getMethodName is
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_95:_20091017:_Attribute.getJavaMember.28.29_returns_null_for_a_BasicType_on_a_MappedSuperclass_because_of_an_uninitialized_accessor
Attribute embeddedAttribute = embedCPUEmbeddedId.getAttribute("pk_part1");
assertNotNull(embeddedAttribute);
Member aMember = embeddedAttribute.getJavaMember();
assertNotNull(aMember); // Fix for missing getMethod in 316991
assertNotNull("id java member is null", aMember);
assertTrue("id attribute java member is not an instance of Method", aMember instanceof Method);
assertEquals("getPk_part1", aMember.getName());
assertEquals(int.class, ((Method)aMember).getReturnType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getJavaMember_BasicType_on_Entity_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
/**
* Return the java.lang.reflect.Member for the represented
* attribute.
* @return corresponding java.lang.reflect.Member
*/
//java.lang.reflect.Member getJavaMember();
Attribute anAttribute = entityManufacturer_.getAttribute("anInt");
assertNotNull(anAttribute);
assertEquals(int.class, anAttribute.getJavaType());
// For primitive and basic types - we should not return null - the attributeAccessor on the MappedSuperclass is not initialized - see
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_95:_20091017:_Attribute.getJavaMember.28.29_returns_null_for_a_BasicType_on_a_MappedSuperclass_because_of_an_uninitialized_accessor
Member aMember = anAttribute.getJavaMember();
assertNotNull("anInt java member is null", aMember);
assertTrue("anInt attribute java member is not an instance of Field", aMember instanceof Field);
assertEquals("anInt", aMember.getName());
assertNotNull(((Field)aMember).getType());
assertEquals(int.class.getName(), ((Field)aMember).getType().getName());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// 316991: regression test getJavaMember() on field level access Entity attribute @OneToOne on an Entity
public void testAttribute_getJavaMember_EntityType_FieldLevel_on_Entity_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
assertEquals(Type.PersistenceType.ENTITY, entityComputer_.getPersistenceType());
/**
* Return the java.lang.reflect.Member for the represented
* attribute.
* @return corresponding java.lang.reflect.Member
*/
//java.lang.reflect.Member getJavaMember();
Attribute anAttribute = entityComputer_.getAttribute("location");
assertNotNull(anAttribute);
assertEquals(GalacticPosition.class, anAttribute.getJavaType());
Member aMember = anAttribute.getJavaMember();
assertNotNull("location java member is null", aMember);
assertTrue("location attribute java member is not an instance of Field", aMember instanceof Field);
assertEquals("location", aMember.getName());
assertNotNull(((Field)aMember).getType());
assertEquals(GalacticPosition.class.getName(), ((Field)aMember).getType().getName());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// 316991: regression test getJavaMember() on field level access Entity attribute unidirectional @OneToOne on a MappedSuperclass
// This test exercises special handling code late in getJavaMember() for MappedSuperclasses
public void testAttribute_getJavaMember_EntityType_FieldLevel_on_MappedSuperclass_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
MappedSuperclassTypeImpl<Designer> msDesigner_ = (MappedSuperclassTypeImpl)metamodel.managedType(Designer.class);
assertNotNull(msDesigner_);
assertEquals(Type.PersistenceType.MAPPED_SUPERCLASS, msDesigner_.getPersistenceType());
/**
* Return the java.lang.reflect.Member for the represented
* attribute.
* @return corresponding java.lang.reflect.Member
*/
//java.lang.reflect.Member getJavaMember();
Attribute anAttribute = msDesigner_.getAttribute("primaryEmployer");
assertNotNull(anAttribute);
assertEquals(Manufacturer.class, anAttribute.getJavaType());
Member aMember = anAttribute.getJavaMember();
assertNotNull("primaryEmployer java member is null", aMember);
assertTrue("primaryEmployer attribute java member is not an instance of Field", aMember instanceof Field);
assertEquals("primaryEmployer", aMember.getName());
assertNotNull(((Field)aMember).getType());
assertEquals(Manufacturer.class.getName(), ((Field)aMember).getType().getName());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// 316991: regression test getJavaMember() on method level access Entity attribute unidirectional @OneToOne on an Entity
public void testAttribute_getJavaMember_EntityType_PropertyMethodLevel_on_Entity_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityType<VectorProcessor> anEntity_ = metamodel.entity(VectorProcessor.class);
assertNotNull(anEntity_);
assertEquals(Type.PersistenceType.ENTITY, anEntity_.getPersistenceType());
/**
* Return the java.lang.reflect.Member for the represented
* attribute.
* @return corresponding java.lang.reflect.Member
*/
//java.lang.reflect.Member getJavaMember();
Attribute anAttribute = anEntity_.getAttribute("host");
assertNotNull(anAttribute);
assertEquals(Computer.class, anAttribute.getJavaType());
Member aMember = anAttribute.getJavaMember();
assertNotNull("host java member is null", aMember);
assertTrue("host attribute java member is not an instance of Method", aMember instanceof Method);
assertEquals("getHost", aMember.getName());
assertEquals(Computer.class, ((Method)aMember).getReturnType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// 316991: regression test getJavaMember() on method level access Entity attribute unidirectional @OneToOne on a MappedSuperclass
// This test exercises special handling code early in getJavaMember() for MappedSuperclasses
public void testAttribute_getJavaMember_EntityType_PropertyMethodLevel_on_MappedSuperclass_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
MappedSuperclassTypeImpl<MSRootPropertyAccess> aMappedSuperclass_ = (MappedSuperclassTypeImpl)metamodel.managedType(MSRootPropertyAccess.class);
assertNotNull(aMappedSuperclass_);
assertEquals(Type.PersistenceType.MAPPED_SUPERCLASS, aMappedSuperclass_.getPersistenceType());
/**
* Return the java.lang.reflect.Member for the represented
* attribute.
* @return corresponding java.lang.reflect.Member
*/
//java.lang.reflect.Member getJavaMember();
Attribute anAttribute = aMappedSuperclass_.getAttribute("primarySuperComputer"); // if attribute is missing from model we throw an IAE
assertNotNull(anAttribute);
assertEquals(ArrayProcessor.class, anAttribute.getJavaType());
Member aMember = anAttribute.getJavaMember();
assertNotNull("primarySuperComputer java member is null", aMember);
assertTrue("primarySuperComputer attribute java member is not an instance of Method", aMember instanceof Method);
assertEquals("getPrimarySuperComputer", aMember.getName());
assertEquals(ArrayProcessor.class, ((Method)aMember).getReturnType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_getJavaMember_ManagedType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
/**
* Return the java.lang.reflect.Member for the represented
* attribute.
* @return corresponding java.lang.reflect.Member
*/
//java.lang.reflect.Member getJavaMember();
Attribute anAttribute = entityManufacturer_.getAttribute("computers");
assertNotNull(anAttribute);
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
Bindable aPluralAttribute = entityManufacturer_.getSet("computers");
assertEquals(Computer.class, aPluralAttribute.getBindableJavaType());
assertEquals(Set.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
Member aMember = anAttribute.getJavaMember();
assertNotNull(aMember);
assertTrue(aMember instanceof Field);
assertEquals("computers", aMember.getName());
assertNotNull(((Field)aMember).getType());
assertEquals(Set.class.getName(), ((Field)aMember).getType().getName());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_isAssociation_on_Plural_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
/**
* Is the attribute an association.
* @return whether boolean indicating whether attribute
* corresponds to an association
*/
//boolean isAssociation();
Attribute anAttribute = entityManufacturer_.getAttribute("computers");
assertNotNull(anAttribute);
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
Bindable aBindable = entityManufacturer_.getSet("computers");
PluralAttribute aPluralAttribute = entityManufacturer_.getSet("computers");
assertEquals(Computer.class, aPluralAttribute.getBindableJavaType());
assertEquals(Set.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
boolean isAssociation = anAttribute.isAssociation();
assertTrue(isAssociation);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_isAssociation_on_Singular_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
/**
* Is the attribute an association.
* @return whether boolean indicating whether attribute
* corresponds to an association
*/
//boolean isAssociation();
Attribute anAttribute = entityComputer_.getAttribute("location");
assertNotNull(anAttribute);
assertEquals(GalacticPosition.class, anAttribute.getJavaType());
boolean isAssociation = anAttribute.isAssociation();
// Only a ReferenceMapping that extends ObjectReferenceMapping returns true
assertTrue(isAssociation);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_isCollection_false_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
Type<?> locationIdType = entityLocation_.getIdType();
assertNotNull(locationIdType);
assertEquals(PersistenceType.EMBEDDABLE, locationIdType.getPersistenceType());
assertEquals(EmbeddedPK.class, locationIdType.getJavaType());
Attribute locationIdAttribute = entityLocation_.getAttribute("primaryKey");
assertNotNull(locationIdAttribute);
assertTrue(locationIdAttribute instanceof SingularAttributeImpl);
/**
* Is the attribute collection-valued.
* @return boolean indicating whether attribute is
* collection-valued
*/
//boolean isCollection();
assertFalse(locationIdAttribute.isCollection());
assertFalse(((AttributeImpl)locationIdAttribute).isPlural()); // non-spec.
ManagedType locationIdAttributeManagedType = locationIdAttribute.getDeclaringType();
assertEquals(entityLocation_, locationIdAttributeManagedType);
ManagedTypeImpl locationIdAttributeManagedTypeImpl = ((SingularAttributeImpl)locationIdAttribute).getManagedTypeImpl();
assertEquals(locationIdType.getJavaType(), ((SingularAttributeImpl)locationIdAttribute).getBindableJavaType());
assertEquals(Bindable.BindableType.SINGULAR_ATTRIBUTE, ((SingularAttributeImpl)locationIdAttribute).getBindableType());
assertEquals(locationIdType.getJavaType(), locationIdAttribute.getJavaType());
Type embeddableType = ((SingularAttributeImpl)locationIdAttribute).getType();
assertNotNull(embeddableType);
assertNotSame(embeddableType, locationIdAttributeManagedType);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testAttribute_isCollection_true_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
Attribute anAttribute = entityManufacturer_.getAttribute("computers");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
assertNotNull(anAttribute);
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
PluralAttribute aPluralAttribute = entityManufacturer_.getSet("computers");
assertEquals(Computer.class, aPluralAttribute.getBindableJavaType());
// 314906: javaType for collections is the collection type not the element type
assertEquals(Set.class, aPluralAttribute.getJavaType());
/**
* Is the attribute collection-valued.
* @return boolean indicating whether attribute is
* collection-valued
*/
//boolean isCollection();
assertTrue(anAttribute.isCollection());
assertTrue(((AttributeImpl)anAttribute).isPlural()); // non-spec.
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testBasicType() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// This interface is empty - however we can test BasicTypeImpl INTERNAL functionality
// Test lazy creation of random basic types
TypeImpl aRandomType = ((MetamodelImpl)metamodel).getType(Integer.class);
assertEquals(Type.PersistenceType.BASIC, aRandomType.getPersistenceType());
BasicTypeImpl aRandomBasicType = (BasicTypeImpl) aRandomType;
assertFalse(aRandomBasicType.isEntity());
assertFalse(aRandomBasicType.isMappedSuperclass());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testBindable_getBindableType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
/*public static enum BindableType {
SINGULAR_ATTRIBUTE, PLURAL_ATTRIBUTE, ENTITY_TYPE}*/
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
/**
* Return the bindable type of the represented object.
* @return bindable type
*/
//BindableType getBindableType();
// EntityTypeImpl
assertEquals(Bindable.BindableType.ENTITY_TYPE, entityManufacturer_.getBindableType());
// SingularAttributeImpl
SingularAttribute<Manufacturer, Boolean> manufacturer_booleanObject =
entityManufacturer_.getDeclaredSingularAttribute("aBooleanObject", Boolean.class);
assertNotNull(manufacturer_booleanObject);
assertEquals(Bindable.BindableType.SINGULAR_ATTRIBUTE, manufacturer_booleanObject.getBindableType());
// PluralAttributeImpl
ListAttribute<Manufacturer, HardwareDesigner> manufacturer_hardwareDesignersList =
entityManufacturer_.getDeclaredList("hardwareDesigners", HardwareDesigner.class);
assertNotNull(manufacturer_hardwareDesignersList);
assertEquals(Bindable.BindableType.PLURAL_ATTRIBUTE, manufacturer_hardwareDesignersList.getBindableType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testBindable_getBindableJavaType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
/*public static enum BindableType {
SINGULAR_ATTRIBUTE, PLURAL_ATTRIBUTE, ENTITY_TYPE}*/
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
SingularAttribute<Manufacturer, Boolean> manufacturer_booleanObject =
entityManufacturer_.getDeclaredSingularAttribute("aBooleanObject", Boolean.class);
assertNotNull(manufacturer_booleanObject);
ListAttribute<Manufacturer, HardwareDesigner> manufacturer_hardwareDesignersList =
entityManufacturer_.getDeclaredList("hardwareDesigners", HardwareDesigner.class);
assertNotNull(manufacturer_hardwareDesignersList);
/**
* Return the Java type of the represented object.
* If the bindable type of the object is <code>PLURAL_ATTRIBUTE</code>,
* the Java element type is returned. If the bindable type is
* <code>SINGULAR_ATTRIBUTE</code> or <code>ENTITY_TYPE</code>,
* the Java type of the
* represented entity or attribute is returned.
* @return Java type
*/
//Class<T> getBindableJavaType();
// EntityTypeImpl
assertEquals(entityManufacturer_.getJavaType(), entityManufacturer_.getBindableJavaType());
// SingularAttribute
assertEquals(manufacturer_booleanObject.getJavaType(), manufacturer_booleanObject.getBindableJavaType());
// PluralAttribute
Type<HardwareDesigner> manufacturer_hardwareDesignersType = manufacturer_hardwareDesignersList.getElementType();
assertNotNull(manufacturer_hardwareDesignersType);
assertNotNull(manufacturer_hardwareDesignersType.getJavaType());
assertEquals(manufacturer_hardwareDesignersType.getJavaType(), manufacturer_hardwareDesignersList.getBindableJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testEmbeddableType() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// The EmbeddableType interface has no methods - however we can test EmbeddableTypeImpl INTERNAL functionality
Type<EmbeddedPK> aType_ = metamodel.managedType(EmbeddedPK.class);
assertNotNull("The EmbeddableType EmbeddedPK should not be null", aType_);
EmbeddableTypeImpl embeddableType_ = (EmbeddableTypeImpl) aType_;
assertFalse("Expected EmbeddedPK.isEntity = false", embeddableType_.isEntity());
assertFalse("Expected EmbeddedPK.isMappedSuperclass = false", embeddableType_.isMappedSuperclass());
assertEquals(PersistenceType.EMBEDDABLE, embeddableType_.getPersistenceType());
assertEquals(EmbeddedPK.class, embeddableType_.getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// 300626
public void testNestedEmbeddableType() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Get the containing Entity
Type<GalacticPosition> containingEntity_ = metamodel.managedType(GalacticPosition.class);
assertNotNull("The containing Entity GalacticPosition should not be null", containingEntity_);
// Get the Embeddable on the Entity
Type<Observation> rootEmbeddable_ = metamodel.embeddable(Observation.class);
assertNotNull("The contained embeddable Observation should not be null", rootEmbeddable_);
EmbeddableTypeImpl rootEmbeddableType_ = (EmbeddableTypeImpl) rootEmbeddable_;
assertFalse("Expected Observation.isEntity = false", rootEmbeddableType_.isEntity());
assertFalse("Expected Observation.isMappedSuperclass = false", rootEmbeddableType_.isMappedSuperclass());
assertEquals(PersistenceType.EMBEDDABLE, rootEmbeddable_.getPersistenceType());
assertEquals(Observation.class, rootEmbeddable_.getJavaType());
// Get the nested embeddable on the parent Embeddable
Type<ObservationDetail> nestedEmbeddable_ = metamodel.embeddable(ObservationDetail.class);
assertNotNull("The contained embeddable Observation should not be null", nestedEmbeddable_);
EmbeddableTypeImpl nestedEmbeddableType_ = (EmbeddableTypeImpl) nestedEmbeddable_;
assertFalse("Expected ObservationData.isEntity = false", nestedEmbeddableType_.isEntity());
assertFalse("Expected Observation.isMappedSuperclass = false", nestedEmbeddableType_.isMappedSuperclass());
assertEquals(PersistenceType.EMBEDDABLE, nestedEmbeddable_.getPersistenceType());
assertEquals(ObservationDetail.class, nestedEmbeddable_.getJavaType());
// verify that the nested embeddable is a member of the root embeddable
SingularAttribute<Observation, ObservationDetail> nestedEmbeddableAttribute_ = rootEmbeddableType_.getSingularAttribute("detail", ObservationDetail.class);
assertNotNull("The nested embeddable ObservationDetail should be a member of the root embeddable Observation",
nestedEmbeddableAttribute_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testEntityType() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// Actual Test Case
/**
* Return the entity name.
* @return entity name
*/
//String getName();
String entityNameWithNameAttribute = entityManufacturer_.getName();
assertNotNull("EntityType.getName() should not be null", entityNameWithNameAttribute);
// this should match the @Entity(name="ManuMetamodel")
assertEquals("ManuMetamodel", entityNameWithNameAttribute);
String entityNameWithoutAttribute = entityHardwareDesigner_.getName();
assertNotNull("EntityType.getName() should not be null", entityNameWithoutAttribute);
// this should match the @Entity(name="HardwareDesigner")
assertEquals("HardwareDesigner", entityNameWithoutAttribute);
// Normal use cases
// Composite table FK's that include a MappedSuperclass
// get an Attribute<Container, Type==String>
Attribute nameAttribute = entityManufacturer_.getAttribute("name");
assertTrue(null != nameAttribute);
// get an Attribute<Container, Type==MappedSuperclass>
Attribute employerAttribute = entityHardwareDesigner_.getAttribute("employer");
assertTrue(null != employerAttribute);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testIdentifiableType_getId_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Actual Test Case
/**
* Return the attribute that corresponds to the id attribute of
* the entity or mapped superclass.
* @param type the type of the represented id attribute
* @return id attribute
* @throws IllegalArgumentException if id attribute of the given
* type is not present in the identifiable type or if
* the identifiable type has an id class
*/
//<Y> SingularAttribute<? super X, Y> getId(Class<Y> type);
EntityType<Manufacturer> aManufacturerType = metamodel.entity(Manufacturer.class);
assertNotNull(aManufacturerType.getId(Integer.class));
// declared and valid
MappedSuperclassTypeImpl<Person> msPerson1_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson1_.getId(Integer.class));
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testIdentifiableType_getVersion_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Actual Test Case
/**
* Return the attribute that corresponds to the version
* attribute of the entity or mapped superclass.
* @param type the type of the represented version attribute
* @return version attribute
* @throws IllegalArgumentException if version attribute of the
* given type is not present in the identifiable type
*/
//<Y> SingularAttribute<? super X, Y> getVersion(Class<Y> type);
// EntityType<Enclosure> anEnclosureType = metamodel.entity(Enclosure.class);
// assertNotNull(anEnclosureType.getVersion(Integer.class));
// declared and inherited
// declared
assertNotNull(entityManufacturer_.getVersion(int.class));
// declared and valid
// FUTURE : require MS version
//assertNotNull(msPerson1_.getVersion(Integer.class)); - keep commented
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything yet.
public void testIdentifiableType_getDeclaredId_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Actual Test Case
/**
* Return the attribute that corresponds to the id attribute
* declared by the entity or mapped superclass.
* @param type the type of the represented declared id attribute
* @return declared id attribute
* @throws IllegalArgumentException if id attribute of the given
* type is not declared in the identifiable type or if
* the identifiable type has an id class
*/
//<Y> SingularAttribute<X, Y> getDeclaredId(Class<Y> type);
// Not declared - invalid
// assertNotNull(aManufacturerType.getDeclaredId(Integer.class)); - keep commented
// declared and valid
//*********************************************/
// FUTURE: Require a version on a MappedSuperclass
//assertNotNull(msPerson1_.getDeclaredId(Integer.class));
} catch (Exception e) {
//e.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testIdentifiableType_getDeclaredVersion_exists_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the attribute that corresponds to the version
* attribute declared by the entity or mapped superclass.
* @param type the type of the represented declared version
* attribute
* @return declared version attribute
* @throws IllegalArgumentException if version attribute of the
* type is not declared in the identifiable type
*/
//<Y> SingularAttribute<X, Y> getDeclaredVersion(Class<Y> type);
// FUTURE: need an undeclared subclass
// Is declared
SingularAttribute<Manufacturer,?> anAttribute = entityManufacturer_.getDeclaredVersion(int.class);
assertNotNull(anAttribute);
assertNotNull(anAttribute.getType());
assertNotNull(anAttribute.getBindableType());
assertNotNull(anAttribute.getBindableJavaType());
assertNotNull(anAttribute.getDeclaringType());
assertEquals(entityManufacturer_, anAttribute.getDeclaringType());
assertFalse(anAttribute.isId());
assertTrue(anAttribute.isVersion());
assertEquals(PersistentAttributeType.BASIC, anAttribute.getPersistentAttributeType());
assertTrue(anAttribute.isOptional());
assertNotNull(anAttribute.getJavaType());
assertFalse(anAttribute.isAssociation());
assertFalse(anAttribute.isCollection());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testIdentifiableType_getDeclaredVersion_exists_above_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the attribute that corresponds to the version
* attribute declared by the entity or mapped superclass.
* @param type the type of the represented declared version
* attribute
* @return declared version attribute
* @throws IllegalArgumentException if version attribute of the
* type is not declared in the identifiable type
*/
//<Y> SingularAttribute<X, Y> getDeclaredVersion(Class<Y> type);
// Does not exist
// EntityType<Enclosure> anEnclosureType = metamodel.entity(Enclosure.class);
// assertNotNull(anEnclosureType.getDeclaredVersion(Integer.class));
// Is declared
assertNotNull(entityManufacturer_.getDeclaredVersion(int.class));
// FUTURE: need an undeclared subclass
// Is declared for assertNotNull(msPerson1_.getDeclaredVersion(Integer.class));
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testIdentifiableType_getDeclaredVersion_does_not_exist_at_all_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the attribute that corresponds to the version
* attribute declared by the entity or mapped superclass.
* @param type the type of the represented declared version
* attribute
* @return declared version attribute
* @throws IllegalArgumentException if version attribute of the
* type is not declared in the identifiable type
*/
//<Y> SingularAttribute<X, Y> getDeclaredVersion(Class<Y> type);
// Does not exist
// EntityType<Enclosure> anEnclosureType = metamodel.entity(Enclosure.class);
// assertNotNull(anEnclosureType.getDeclaredVersion(Integer.class));
// Is declared
assertNotNull(entityManufacturer_.getDeclaredVersion(int.class));
// FUTURE: need an undeclared subclass
// Is declared for assertNotNull(msPerson1_.getDeclaredVersion(Integer.class));
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testIdentifiableType_getSupertype_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
/**
* Return the identifiable type that corresponds to the most
* specific mapped superclass or entity extended by the entity
* or mapped superclass.
* @return supertype of identifiable type or null if no such supertype
*/
//IdentifiableType<? super X> getSupertype();
// Test normal path
expectedIAExceptionThrown = false;
IdentifiableType<? super Manufacturer> superTypeManufacturer = null;
try {
superTypeManufacturer = entityManufacturer_.getSupertype();
} catch (IllegalArgumentException iae) {
// expecting no exception
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(superTypeManufacturer);
/**
* see
metamodel MetamodelImpl (id=113)
embeddables LinkedHashMap<K,V> (id=251)
size 0
entities LinkedHashMap<K,V> (id=253)
size 10
managedTypes LinkedHashMap<K,V> (id=254)
size 14
mappedSuperclasses HashSet<E> (id=255)
map HashMap<K,V> (id=278)
size 4
types LinkedHashMap<K,V> (id=259)
size 17
*/
// Check for superclass using non-API code
//assertEquals(metamodel.type("org.eclipse.persistence.testing.models.jpa.metamodel.Corporation"), superType);
// Test error path (null return)
expectedIAExceptionThrown = false;
IdentifiableType<? super GalacticPosition> superTypeLocation = null;
try {
superTypeLocation = entityLocation_.getSupertype();
} catch (IllegalArgumentException iae) {
// expecting no exception
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNull(superTypeLocation);
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testIdentifiableType_hasSingleIdAttribute_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<WithInner> withInner_ = (EntityTypeImpl)metamodel.entity(WithInner.class);
assertNotNull(withInner_);
/**
* Whether or not the identifiable type has an id attribute.
* Returns true for a simple id or embedded id; returns false
* for an idclass.
* @return boolean indicating whether or not the identifiable
* type has a single id attribute
*/
// We do not need to test Embeddable to Basic as they do not implement IdentifiableType
//boolean hasSingleIdAttribute();
// verify false for "no" type of Id attribute
// @Id - test normal path
expectedIAExceptionThrown = false;
boolean hasSingleIdAttribute = false;
try {
EntityType<Manufacturer> aType = metamodel.entity(Manufacturer.class);
hasSingleIdAttribute = aType.hasSingleIdAttribute();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertTrue(hasSingleIdAttribute);
// @EmbeddedId
expectedIAExceptionThrown = false;
hasSingleIdAttribute = false;
try {
EntityType<GalacticPosition> aType = metamodel.entity(GalacticPosition.class);
hasSingleIdAttribute = aType.hasSingleIdAttribute();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertTrue(hasSingleIdAttribute);
// @IdClass - test exception path
expectedIAExceptionThrown = false;
hasSingleIdAttribute = true;
try {
EntityType<Enclosure> aType = metamodel.entity(Enclosure.class);
hasSingleIdAttribute = aType.hasSingleIdAttribute();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertFalse(hasSingleIdAttribute);
// @IdClass - inner
expectedIAExceptionThrown = false;
hasSingleIdAttribute = false;
try {
EntityType<WithInner> aType = metamodel.entity(WithInner.class);
hasSingleIdAttribute = aType.hasSingleIdAttribute();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertFalse(hasSingleIdAttribute);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testIdentifiableType_hasVersionAttribute_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Whether or not the identifiable type has a version attribute.
* @return boolean indicating whether or not the identifiable
* type has a version attribute
*/
//boolean hasVersionAttribute();
EntityType<Enclosure> anEnclosureType = metamodel.entity(Enclosure.class);
assertFalse(anEnclosureType.hasVersionAttribute());
assertTrue(entityManufacturer_.hasVersionAttribute());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testIdentifiableType_getIdClassAttributes_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
// Actual Test Case
/**
* Return the attributes corresponding to the id class of the
* identifiable type.
* @return id attributes
* @throws IllegalArgumentException if the identifiable type
* does not have an id class
*/
//java.util.Set<SingularAttribute<? super X, ?>> getIdClassAttributes();
// @IdClass - test normal path
expectedIAExceptionThrown = false;
boolean hasSingleIdAttribute = true;
Set<SingularAttribute<? super Enclosure, ?>> idClassAttributes = null;
EntityType<Enclosure> aType = metamodel.entity(Enclosure.class);
hasSingleIdAttribute = aType.hasSingleIdAttribute();
// We verify that an @IdClass exists - no single @Id or @EmbeddedId exists
assertFalse(hasSingleIdAttribute);
idClassAttributes = aType.getIdClassAttributes();
assertNotNull(idClassAttributes);
assertEquals(4, idClassAttributes.size());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testIdentifiableType_getIdClassAttributesAcrossMappedSuperclassChain_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
// Actual Test Case
/**
* Return the attributes corresponding to the id class of the
* identifiable type.
* @return id attributes
* @throws IllegalArgumentException if the identifiable type
* does not have an id class
*/
//java.util.Set<SingularAttribute<? super X, ?>> getIdClassAttributes();
// @IdClass - test normal path
expectedIAExceptionThrown = false;
boolean hasSingleIdAttribute = true;
// 0 id attributes here
Set<SingularAttribute<? super MS_MS_Entity_Leaf, ?>> idClassAttributesLeaf = null;
IdentifiableType<MS_MS_Entity_Leaf> aTypeLeaf = metamodel.entity(MS_MS_Entity_Leaf.class);
// 1 id attribute here
Set<SingularAttribute<? super MS_MS_Entity_Center, ?>> idClassAttributesCenter = null;
MappedSuperclassType<MS_MS_Entity_Center> aTypeCenter = (MappedSuperclassType)metamodel.managedType(MS_MS_Entity_Center.class);
// 3 id attributes here
Set<SingularAttribute<? super MS_MS_Entity_Root, ?>> idClassAttributesRoot = null;
MappedSuperclassType<MS_MS_Entity_Root> aTypeRoot = (MappedSuperclassType)metamodel.managedType(MS_MS_Entity_Root.class);
hasSingleIdAttribute = aTypeLeaf.hasSingleIdAttribute();
// We verify that an an @IdClass exists above
assertFalse(hasSingleIdAttribute); // This tests the IdentifiableType part of the transaction for DI 78
hasSingleIdAttribute = aTypeCenter.hasSingleIdAttribute();
// We verify that an one part of an @IdClass exists
assertTrue(hasSingleIdAttribute); // This tests the IdentifiableType part of the transaction for DI 78
hasSingleIdAttribute = aTypeRoot.hasSingleIdAttribute();
// We verify that an @IdClass exists - no single @Id or @EmbeddedId exists
assertFalse(hasSingleIdAttribute); // This tests the IdentifiableType part of the transaction for DI 78
//idClassAttributesLeaf = aTypeLeaf.getIdClassAttributes(); // expected IAE - leave commented
idClassAttributesCenter = aTypeCenter.getIdClassAttributes();
assertNotNull(idClassAttributesCenter);
assertEquals(1, idClassAttributesCenter.size());
// The following call is not valid because the IdClass attribute is defined one level below
try {
idClassAttributesRoot = aTypeRoot.getIdClassAttributes();
} catch (IllegalArgumentException iae) {
expectedIAExceptionThrown = true;
}
assertTrue(expectedIAExceptionThrown);
expectedIAExceptionThrown = false;
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testIdentifiableType_getIdType_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Actual Test Case
/**
* Return the type that represents the type of the id.
* @return type of id
*/
//Type<?> getIdType();
// Test EntityType
// Test normal path for an [Embeddable] type via @EmbeddedId
expectedIAExceptionThrown = false;
Type<?> locationIdType = null;
try {
locationIdType = entityLocation_.getIdType();
} catch (IllegalArgumentException iae) {
// expecting no exception
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(locationIdType);
assertEquals(PersistenceType.EMBEDDABLE, locationIdType.getPersistenceType());
assertEquals(EmbeddedPK.class, locationIdType.getJavaType());
// check that the elementType and the owningType (managedType) are set correctly
// See issue 50 where some mapping types were not setting the elementType correctly (this includes aggregate types like Embeddable)
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_50:_20090727:_Handle_all_mapping_types_in_the_SingularAttribute_constructor
// Get the ManagedType and check this SingularAttribute PK
Attribute locationIdAttribute = entityLocation_.getAttribute("primaryKey");
assertNotNull(locationIdAttribute);
assertTrue(locationIdAttribute instanceof SingularAttributeImpl);
assertFalse(locationIdAttribute.isCollection());
assertFalse(((AttributeImpl)locationIdAttribute).isPlural()); // non-spec.
ManagedType locationIdAttributeManagedType = locationIdAttribute.getDeclaringType();
assertEquals(entityLocation_, locationIdAttributeManagedType);
ManagedTypeImpl locationIdAttributeManagedTypeImpl = ((SingularAttributeImpl)locationIdAttribute).getManagedTypeImpl();
assertEquals(locationIdType.getJavaType(), ((SingularAttributeImpl)locationIdAttribute).getBindableJavaType());
assertEquals(Bindable.BindableType.SINGULAR_ATTRIBUTE, ((SingularAttributeImpl)locationIdAttribute).getBindableType());
assertEquals(locationIdType.getJavaType(), locationIdAttribute.getJavaType());
Type embeddableType = ((SingularAttributeImpl)locationIdAttribute).getType();
assertNotNull(embeddableType);
assertNotSame(embeddableType, locationIdAttributeManagedType);
// Test normal path for a [Basic] type
expectedIAExceptionThrown = false;
Type<?> computerIdType = null;
try {
computerIdType = entityComputer_.getIdType();
} catch (IllegalArgumentException iae) {
// expecting no exception
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(computerIdType);
assertEquals(PersistenceType.BASIC, computerIdType.getPersistenceType());
assertEquals(Integer.class, computerIdType.getJavaType());
// Test MappedSuperclassType
// Test normal path for a [Basic] type
expectedIAExceptionThrown = false;
Type<?> personIdType = null;
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
// Verify all types (entities, embeddables, mappedsuperclasses and basic)
// get all 21 types (a non spec function - for testing introspection)
Map<String, TypeImpl<?>> typesMap = ((MetamodelImpl)metamodel).getTypes();
// verify each one
assertNotNull(typesMap);
((MetamodelImpl)metamodel).printAllTypes();
// Note: Since BasicTypes are lazy - loaded into the metamodel-types Map - this test must preceed any test that verifies all BasicType objects like "testIdentifiableType_getIdType_Method"
// You will get a lower number here - if only this single test is run via the Testing Browser
assertEquals(METAMODEL_ALL_TYPES, typesMap.size());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testListAttribute() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
// Actual Test Case
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testManagedType_getAttributes_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// Actual Test Case
/**
* The following variant test cases are common to all functions
* 1) get*Attribute(name) = null (missing) --> IAE
* 2) get*Attribute(name, type) = null (missing, type=irrelevant) --> IAE
* 3) get*Attribute(name, type) = exists but type != returned type --> IAE
*/
/**
* Return the attributes of the managed type.
*/
//java.util.Set<Attribute<? super X, ?>> getAttributes();
Set<Attribute<? super Manufacturer, ?>> attributeSet = entityManufacturer_.getAttributes();
assertNotNull(attributeSet);
// We should see 30 attributes (3 List, 3 Singular, 17 basic (java.lang, java.math) for Manufacturer (computers, hardwareDesigners, id(from the mappedSuperclass),
// version, name(from the mappedSuperclass) and corporateComputers from the Corporation mappedSuperclass)
assertEquals(METAMODEL_MANUFACTURER_DECLARED_TYPES + 6, attributeSet.size());
// for each managed entity we will see 2 entries (one for the Id, one for the Version)
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("id"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("version"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("name"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("computers"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("hardwareDesigners"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("corporateComputers"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMap"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC1a"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC2"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC4"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC7"))); //
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC8"))); //
// ManyToMany Collection Attribute from Person MappedSuperclass
assertTrue(attributeSet.contains(entityManufacturer_.getCollection("historicalEmps"))); //
assertTrue(entityManufacturer_.getCollection("historicalEmps").isCollection()); //
// Basic java.lang and java.math primitive and primitive object types
//private Object anObject; - invalid
//assertTrue(attributeSet.contains(entityManufacturer.getAttribute("anObject"))); //
//assertNotNull(entityManufacturer.getAttribute("anObject"));
//assertTrue(entityManufacturer.getAttribute("anObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
//assertEquals(Object.class, entityManufacturer.getAttribute("anObject").getJavaType());
//private Boolean aBooleanObject;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aBooleanObject"))); //
assertNotNull(entityManufacturer_.getAttribute("aBooleanObject"));
assertTrue(entityManufacturer_.getAttribute("aBooleanObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(Boolean.class, entityManufacturer_.getAttribute("aBooleanObject").getJavaType());
//private Byte aByteObject;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aByteObject"))); //
assertNotNull(entityManufacturer_.getAttribute("aByteObject"));
assertTrue(entityManufacturer_.getAttribute("aByteObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(Byte.class, entityManufacturer_.getAttribute("aByteObject").getJavaType());
//private Short aShortObject;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aShortObject"))); //
assertNotNull(entityManufacturer_.getAttribute("aShortObject"));
assertTrue(entityManufacturer_.getAttribute("aShortObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(Short.class, entityManufacturer_.getAttribute("aShortObject").getJavaType());
//private Integer anIntegerObject;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("anIntegerObject"))); //
assertNotNull(entityManufacturer_.getAttribute("anIntegerObject"));
assertTrue(entityManufacturer_.getAttribute("anIntegerObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(Integer.class, entityManufacturer_.getAttribute("anIntegerObject").getJavaType());
//private Long aLongObject;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aLongObject"))); //
assertNotNull(entityManufacturer_.getAttribute("aLongObject"));
assertTrue(entityManufacturer_.getAttribute("aLongObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(Long.class, entityManufacturer_.getAttribute("aLongObject").getJavaType());
//private BigInteger aBigIntegerObject;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aBigIntegerObject"))); //
assertNotNull(entityManufacturer_.getAttribute("aBigIntegerObject"));
assertTrue(entityManufacturer_.getAttribute("aBigIntegerObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(BigInteger.class, entityManufacturer_.getAttribute("aBigIntegerObject").getJavaType());
//private Float aFloatObject;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aFloatObject"))); //
assertNotNull(entityManufacturer_.getAttribute("aFloatObject"));
assertTrue(entityManufacturer_.getAttribute("aFloatObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(Float.class, entityManufacturer_.getAttribute("aFloatObject").getJavaType());
//private Double aDoubleObject;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aDoubleObject"))); //
assertNotNull(entityManufacturer_.getAttribute("aDoubleObject"));
assertTrue(entityManufacturer_.getAttribute("aDoubleObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(Double.class, entityManufacturer_.getAttribute("aDoubleObject").getJavaType());
//private Character aCharacterObject;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aCharacterObject"))); //
assertNotNull(entityManufacturer_.getAttribute("aCharacterObject"));
assertTrue(entityManufacturer_.getAttribute("aCharacterObject").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(Character.class, entityManufacturer_.getAttribute("aCharacterObject").getJavaType());
//private Enum anEnum;
// FUTURE: the following 4 lines are not implemented yet
//assertTrue(attributeSet.contains(entityManufacturer.getAttribute("anEnum"))); //
//assertNotNull(entityManufacturer.getAttribute("anEnum"));
//assertTrue(entityManufacturer.getAttribute("anEnum").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
//assertEquals(Enum.class, entityManufacturer.getAttribute("anEnum").getJavaType());
//private boolean aBoolean;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aBoolean"))); //
assertNotNull(entityManufacturer_.getAttribute("aBoolean"));
assertTrue(entityManufacturer_.getAttribute("aBoolean").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(boolean.class, entityManufacturer_.getAttribute("aBoolean").getJavaType());
//private byte aByte;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aByte"))); //
assertNotNull(entityManufacturer_.getAttribute("aByte"));
assertTrue(entityManufacturer_.getAttribute("aByte").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(byte.class, entityManufacturer_.getAttribute("aByte").getJavaType());
//private short aShort;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aShort"))); //
assertNotNull(entityManufacturer_.getAttribute("aShort"));
assertTrue(entityManufacturer_.getAttribute("aShort").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(short.class, entityManufacturer_.getAttribute("aShort").getJavaType());
//private int anInt;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("anInt"))); //
assertNotNull(entityManufacturer_.getAttribute("anInt"));
assertTrue(entityManufacturer_.getAttribute("anInt").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(int.class, entityManufacturer_.getAttribute("anInt").getJavaType());
//private long aLong;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aLong"))); //
assertNotNull(entityManufacturer_.getAttribute("aLong"));
assertTrue(entityManufacturer_.getAttribute("aLong").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(long.class, entityManufacturer_.getAttribute("aLong").getJavaType());
//private float aFloat;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aFloat"))); //
assertNotNull(entityManufacturer_.getAttribute("aFloat"));
assertTrue(entityManufacturer_.getAttribute("aFloat").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(float.class, entityManufacturer_.getAttribute("aFloat").getJavaType());
//private double aDouble;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aDouble"))); //
assertNotNull(entityManufacturer_.getAttribute("aDouble"));
assertTrue(entityManufacturer_.getAttribute("aDouble").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(double.class, entityManufacturer_.getAttribute("aDouble").getJavaType());
//private char aChar;
assertTrue(attributeSet.contains(entityManufacturer_.getAttribute("aChar"))); //
assertNotNull(entityManufacturer_.getAttribute("aChar"));
assertTrue(entityManufacturer_.getAttribute("aChar").getPersistentAttributeType().equals(PersistentAttributeType.BASIC));
assertEquals(char.class, entityManufacturer_.getAttribute("aChar").getJavaType());
/**
* Return the attributes declared by the managed type.
* Testing for Design Issue 52:
* http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI:52_Refactor:_20090817
*/
//java.util.Set<Attribute<X, ?>> getDeclaredAttributes();
expectedIAExceptionThrown = false;
try {
/**
* Hierarchy:
* Person : MappedSuperclass
* +
* +- id : Integer
* +- name : String
* +- historicalEmps : Manufacturer
*
* Corporation : MappedSuperclass extends Person
* +
* +- corporateComputers : Collection
*
* Manufacturer : Entity extends Corporation
* +
* +- computers : Set
* +- hardwareDesigners : List
* +- hardwareDesignersMap : Map
* +- version : int
*/
Set<Attribute<Manufacturer, ?>> declaredAttributesSet = entityManufacturer_.getDeclaredAttributes();
assertNotNull(declaredAttributesSet);
// We should see 8+17 declared out of 12 attributes for Manufacturer
assertEquals(METAMODEL_MANUFACTURER_DECLARED_TYPES + 1, declaredAttributesSet.size());
// Id is declared 2 levels above
assertFalse(declaredAttributesSet.contains(entityManufacturer_.getAttribute("id"))); //
// name is declared 2 levels above
assertFalse(declaredAttributesSet.contains(entityManufacturer_.getAttribute("name"))); //
// corporateComputers is declared 1 level above
assertFalse(declaredAttributesSet.contains(entityManufacturer_.getAttribute("corporateComputers"))); //
// version is declared at this level
assertTrue(declaredAttributesSet.contains(entityManufacturer_.getAttribute("version"))); //
// computers is declared at this level
assertTrue(declaredAttributesSet.contains(entityManufacturer_.getAttribute("computers"))); //
// hardwareDesigners is declared at this level
assertTrue(declaredAttributesSet.contains(entityManufacturer_.getAttribute("hardwareDesigners"))); //
// hardwareDesignersMap is declared at this level
assertTrue(declaredAttributesSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMap"))); //
assertTrue(declaredAttributesSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC1a"))); //
assertTrue(declaredAttributesSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC2"))); //
assertTrue(declaredAttributesSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC4"))); //
assertTrue(declaredAttributesSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC7"))); //
assertTrue(declaredAttributesSet.contains(entityManufacturer_.getAttribute("hardwareDesignersMapUC8"))); //
// historicalEmps is declared 2 levels above
assertFalse(declaredAttributesSet.contains(entityManufacturer_.getAttribute("historicalEmps"))); //
Set<Attribute<Corporation, ?>> declaredAttributesSetForCorporation = msCorporation_.getDeclaredAttributes();
assertNotNull(declaredAttributesSetForCorporation);
// We should see 2 declared out of 5 attributes for Computer
assertEquals(2, declaredAttributesSetForCorporation.size());
// Id is declared 1 level above
//assertFalse(declaredAttributesSetForCorporation.contains(msCorporation.getAttribute("id"))); //
// name is declared 1 level above but is not visible in a ms-->ms hierarchy
//assertFalse(declaredAttributesSetForCorporation.contains(msCorporation.getAttribute("name"))); //
// corporateComputers is declared at this level
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
assertTrue(declaredAttributesSetForCorporation.contains(msCorporation_.getAttribute("corporateComputers"))); //
// historicalEmps is declared 1 level above but is not visible in a ms-->ms hierarchy
//assertFalse(declaredAttributesSetForCorporation.contains(msCorporation.getAttribute("historicalEmps"))); //
Set<Attribute<Person, ?>> declaredAttributesSetForPerson = msPerson_.getDeclaredAttributes();
assertNotNull(declaredAttributesSetForPerson);
// We should see 3 declared out of 20 attributes for Person
assertEquals(3, declaredAttributesSetForPerson.size());
// Id is declared at this level
assertTrue(declaredAttributesSetForPerson.contains(msPerson_.getAttribute("id"))); //
// name is declared at this level
assertTrue(declaredAttributesSetForPerson.contains(msPerson_.getAttribute("name"))); //
// historicalEmps is declared at this level
assertTrue(declaredAttributesSetForPerson.contains(msPerson_.getAttribute("historicalEmps"))); //
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
// Test Entity-->Entity hierarchy
/**
* Return the single-valued attribute of the managed
* type that corresponds to the specified name and Java type
* in the represented type.
* @param name the name of the represented attribute
* @param type the type of the represented attribute
* @return single-valued attribute with given name and type
* @throws IllegalArgumentException if attribute of the given
* name and type is not present in the managed type
*/
//<Y> SingularAttribute<? super X, Y> getSingularAttribute(String name, Class<Y> type);
// Test normal path
expectedIAExceptionThrown = false;
SingularAttribute<? super Manufacturer, Double> aManufacturer_DoubleAttribute = null;
try {
aManufacturer_DoubleAttribute = entityManufacturer_.getSingularAttribute("aDoubleObject", Double.class);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(aManufacturer_DoubleAttribute);
expectedIAExceptionThrown = false;
SingularAttribute<? super Manufacturer, ?> aManufacturer_doubleAttribute = null;
// Test autoboxed rules relax throwing an IAE
try {
aManufacturer_doubleAttribute = entityManufacturer_.getSingularAttribute("aDoubleObject", double.class);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(aManufacturer_doubleAttribute);
// Test IAE handling on wrong type
expectedIAExceptionThrown = false;
SingularAttribute<? super Manufacturer, ?> aManufacturer_wrong_intAttribute = null;
// Test autoboxed rules relax throwing an IAE
try {
aManufacturer_wrong_intAttribute = entityManufacturer_.getSingularAttribute("aDoubleObject", int.class);
} catch (IllegalArgumentException iae) {
// expecting
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
assertNull(aManufacturer_wrong_intAttribute);
// Test IAE handling on wrong type
expectedIAExceptionThrown = false;
SingularAttribute<? super Manufacturer, ?> aManufacturer_wrong_IntegerAttribute = null;
// Test autoboxed rules relax throwing an IAE
try {
aManufacturer_wrong_IntegerAttribute = entityManufacturer_.getSingularAttribute("aDoubleObject", Integer.class);
} catch (IllegalArgumentException iae) {
// expecting
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
assertNull(aManufacturer_wrong_IntegerAttribute);
/**
* Return the declared single-valued attribute of the
* managed type that corresponds to the specified name and Java
* type in the represented type.
* @param name the name of the represented attribute
* @param type the type of the represented attribute
* @return declared single-valued attribute of the given
* name and type
* @throws IllegalArgumentException if attribute of the given
* name and type is not declared in the managed type
*/
//<Y> SingularAttribute<X, Y> getDeclaredSingularAttribute(String name, Class<Y> type);
// Test normal path
expectedIAExceptionThrown = false;
SingularAttribute<? super Manufacturer, Double> aDeclaredManufacturer_DoubleAttribute = null;
try {
aDeclaredManufacturer_DoubleAttribute = entityManufacturer_.getDeclaredSingularAttribute("aDoubleObject", Double.class);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(aDeclaredManufacturer_DoubleAttribute);
expectedIAExceptionThrown = false;
SingularAttribute<? super Manufacturer, ?> aDeclaredManufacturer_doubleAttribute = null;
// Test autoboxed rules relax throwing an IAE
try {
aDeclaredManufacturer_doubleAttribute = entityManufacturer_.getDeclaredSingularAttribute("aDoubleObject", double.class);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(aDeclaredManufacturer_doubleAttribute);
// Test IAE handling on wrong type
expectedIAExceptionThrown = false;
SingularAttribute<? super Manufacturer, ?> aDeclaredManufacturer_wrong_intAttribute = null;
// Test autoboxed rules relax throwing an IAE
try {
aDeclaredManufacturer_wrong_intAttribute = entityManufacturer_.getDeclaredSingularAttribute("aDoubleObject", int.class);
} catch (IllegalArgumentException iae) {
// expecting
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
assertNull(aDeclaredManufacturer_wrong_intAttribute);
// Test IAE handling on wrong type
expectedIAExceptionThrown = false;
SingularAttribute<? super Manufacturer, ?> aDeclaredManufacturer_wrong_IntegerAttribute = null;
// Test autoboxed rules relax throwing an IAE
try {
aDeclaredManufacturer_wrong_IntegerAttribute = entityManufacturer_.getDeclaredSingularAttribute("aDoubleObject", Integer.class);
} catch (IllegalArgumentException iae) {
// expecting
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
assertNull(aDeclaredManufacturer_wrong_IntegerAttribute);
// Test wrong hierarchy IAE failures
/**
* Return the single-valued attributes of the managed type.
* @return single-valued attributes
*/
//java.util.Set<SingularAttribute<? super X, ?>> getSingularAttributes();
Set<SingularAttribute<? super Manufacturer, ?>> singularAttributeSet = entityManufacturer_.getSingularAttributes();
assertNotNull(singularAttributeSet);
// We should see 4+18 singular attributes for Manufacturer (id(from the mappedSuperclass), version, name(from the mappedSuperclass))
assertEquals(METAMODEL_MANUFACTURER_DECLARED_TYPES - 6, singularAttributeSet.size());
// for each managed entity we will see 2 entries (one for the Id, one for the Version)
assertTrue(singularAttributeSet.contains(entityManufacturer_.getAttribute("id"))); //
assertTrue(singularAttributeSet.contains(entityManufacturer_.getAttribute("version"))); //
assertTrue(singularAttributeSet.contains(entityManufacturer_.getAttribute("name"))); //
/**
* Return the single-valued attributes declared by the managed
* type.
* @return declared single-valued attributes
*/
//java.util.Set<SingularAttribute<X, ?>> getDeclaredSingularAttributes();
/**
* Return the Collection-valued attribute of the managed type
* that corresponds to the specified name and Java element type.
* @param name the name of the represented attribute
* @param elementType the element type of the represented
* attribute
* @return CollectionAttribute of the given name and element
* type
* @throws IllegalArgumentException if attribute of the given
* name and type is not present in the managed type
*/
//<E> CollectionAttribute<? super X, E> getCollection(String name, Class<E> elementType);
/**
* Return the Set-valued attribute of the managed type that
* corresponds to the specified name and Java element type.
* @param name the name of the represented attribute
* @param elementType the element type of the represented
* attribute
* @return SetAttribute of the given name and element type
* @throws IllegalArgumentException if attribute of the given
* name and type is not present in the managed type
*/
//<E> SetAttribute<? super X, E> getSet(String name, Class<E> elementType);
/**
* Return the List-valued attribute of the managed type that
* corresponds to the specified name and Java element type.
* @param name the name of the represented attribute
* @param elementType the element type of the represented
* attribute
* @return ListAttribute of the given name and element type
* @throws IllegalArgumentException if attribute of the given
* name and type is not present in the managed type
*/
//<E> ListAttribute<? super X, E> getList(String name, Class<E> elementType);
/**
* Return the Collection-valued attribute declared by the
* managed type that corresponds to the specified name and Java
* element type.
* @param name the name of the represented attribute
* @param elementType the element type of the represented
* attribute
* @return declared CollectionAttribute of the given name and
* element type
* @throws IllegalArgumentException if attribute of the given
* name and type is not declared in the managed type
*/
//<E> CollectionAttribute<X, E> getDeclaredCollection(String name, Class<E> elementType);
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC1 - the attribute does not exist on the managedType (regardless of whether it is on any superType)
CollectionAttribute<Manufacturer, GalacticPosition> anAttribute =
entityManufacturer_.getDeclaredCollection("locations", entityLocation_.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
//java.lang.IllegalArgumentException: The attribute [locations] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present.
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC2 - the attribute is on the managedType (but is the wrong type)
// Also avoid a CCE on a List attribute
//java.lang.ClassCastException: org.eclipse.persistence.internal.jpa.metamodel.ListAttributeImpl cannot be cast to jakarta.persistence.metamodel.CollectionAttribute
CollectionAttribute<Manufacturer, ?> anAttribute =
entityManufacturer_.getDeclaredCollection("hardwareDesigners", entityManufacturer_.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
//java.lang.IllegalArgumentException: Expected attribute return type [COLLECTION] on the existing attribute [hardwareDesigners] on the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] but found attribute return type [LIST].
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
// FUTURE: We need a Collection (computers is a Set)
/* expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC3 - the attribute is on the managedType (not on any superType)
CollectionAttribute<Manufacturer, HardwareDesigner> anAttribute =
entityManufacturer.getDeclaredCollection("computers", entityHardwareDesigner.getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
*/
/* // FUTURE: We need a Collection on a superclass (computers is a Set)
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC4 - the attribute is on the immediate superclass but it is the wrong return type of LIST instead of COLLECTION
CollectionAttribute<Manufacturer, Computer> anAttribute =
entityManufacturer.getDeclaredCollection("corporateComputers", entityComputer.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
// java.lang.IllegalArgumentException: The declared attribute [corporateComputers] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present - however, it is declared on a superclass.
//iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
*/
// private Collection<Computer> corporateComputers = new HashSet<Computer>();
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_91:_20091008:_ManagedType.getDeclaredAttribute.28.29_does_not_throw_expected_IAE_for_Entity.28target.29-MappedSuperclass-MappedSuperclass.28attribute.29_Hierarchy
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
// UC4 - the attribute is on the immediate superclass and is the correct COLLECTION - we still get an IAE
CollectionAttribute<Manufacturer, Computer> anAttribute =
entityManufacturer_.getDeclaredCollection("corporateComputers", entityComputer_.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
// java.lang.IllegalArgumentException: Expected attribute return type [COLLECTION] on the existing attribute [corporateComputers] on the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] but found attribute return type [LIST].
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
/**
* Return the Set-valued attribute declared by the managed type
* that corresponds to the specified name and Java element type.
* @param name the name of the represented attribute
* @param elementType the element type of the represented
* attribute
* @return declared SetAttribute of the given name and
* element type
* @throws IllegalArgumentException if attribute of the given
* name and type is not declared in the managed type
*/
//<E> SetAttribute<X, E> getDeclaredSet(String name, Class<E> elementType);
/**
* Return the List-valued attribute declared by the managed
* type that corresponds to the specified name and Java
* element type.
* @param name the name of the represented attribute
* @param elementType the element type of the represented
* attribute
* @return declared ListAttribute of the given name and
* element type
* @throws IllegalArgumentException if attribute of the given
* name and type is not declared in the managed type
*/
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC1 - the attribute does not exist on the managedType (regardless of whether it is on any superType)
ListAttribute<Manufacturer, GalacticPosition> anAttribute =
entityManufacturer_.getDeclaredList("locations", entityLocation_.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
//java.lang.IllegalArgumentException: The attribute [locations] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present.
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC2 - the attribute is on the managedType (but is the wrong type)
ListAttribute<Manufacturer, ?> anAttribute =
entityManufacturer_.getDeclaredList("hardwareDesigners", entityManufacturer_.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
//java.lang.IllegalArgumentException: Expected attribute type [class org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer] on the existing attribute [hardwareDesigners] on the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] but found attribute type [class org.eclipse.persistence.testing.models.jpa.metamodel.HardwareDesigner].
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC3 - the attribute is on the managedType (not on any superType)
ListAttribute<Manufacturer, HardwareDesigner> anAttribute =
entityManufacturer_.getDeclaredList("hardwareDesigners", entityHardwareDesigner_.getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
// private Collection<Computer> corporateComputers = new HashSet<Computer>();
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_91:_20091008:_ManagedType.getDeclaredAttribute.28.29_does_not_throw_expected_IAE_for_Entity.28target.29-MappedSuperclass-MappedSuperclass.28attribute.29_Hierarchy
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC4 - the attribute is on the immediate superclass
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
CollectionAttribute<Manufacturer, Computer> anAttribute =
entityManufacturer_.getDeclaredCollection("corporateComputers", entityComputer_.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
// java.lang.IllegalArgumentException: The declared attribute [corporateComputers] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present - however, it is declared on a superclass.
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
/**
* Return all collection-valued attributes of the managed type.
* @return collection valued attributes
*/
//java.util.Set<PluralAttribute<? super X, ?, ?>> getCollections();
/**
* Return all collection-valued attributes declared by the
* managed type.
* @return declared collection valued attributes
*/
//java.util.Set<PluralAttribute<X, ?, ?>> getDeclaredCollections();
// This also tests getCollections()
// Here we start with 6 attributes in getAttributes() - this is reduced to 3 in getCollections before declared filtering
// In declaredCollections we reduce this to 2 because one of the types "corporateComputers" is on a mappedSuperclass
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC3 - the attribute is on the managedType (not on any superType)
Set<PluralAttribute<Manufacturer, ?, ?>> collections =
entityManufacturer_.getDeclaredPluralAttributes();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
/**
* Return the attribute of the managed
* type that corresponds to the specified name.
* @param name the name of the represented attribute
* @return attribute with given name
* @throws IllegalArgumentException if attribute of the given
* name is not present in the managed type
*/
//Attribute<? super X, ?> getAttribute(String name);
/**
* Return the declared attribute of the managed
* type that corresponds to the specified name.
* @param name the name of the represented attribute
* @return attribute with given name
* @throws IllegalArgumentException if attribute of the given
* name is not declared in the managed type
*/
//Attribute<X, ?> getDeclaredAttribute(String name);
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC1 - the attribute does not exist on the managedType (regardless of whether it is on any superType)
Attribute<Manufacturer, ?> anAttribute =
entityManufacturer_.getDeclaredAttribute("locations");//, entityLocation.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
//java.lang.IllegalArgumentException: The attribute [locations] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present.
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC3 - the attribute is on the managedType (not on any superType)
Attribute<Manufacturer, ?> anAttribute =
entityManufacturer_.getDeclaredAttribute("hardwareDesigners");//, entityHardwareDesigner.getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC4 - the attribute is on the immediate superclass
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
Attribute<Manufacturer, ?> anAttribute =
entityManufacturer_.getDeclaredAttribute("corporateComputers");//, entityComputer.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
// java.lang.IllegalArgumentException: The declared attribute [corporateComputers] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present - however, it is declared on a superclass.
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
expectedIAExceptionThrown = false;
Attribute<Manufacturer, ?> aListAttribute = null;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// the attribute is on the class
aListAttribute = entityManufacturer_.getDeclaredAttribute("hardwareDesigners");//, entityComputer.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
// java.lang.IllegalArgumentException: The declared attribute [corporateComputers] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present - however, it is declared on a superclass.
//iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(aListAttribute);
// check the root
expectedIAExceptionThrown = false;
Attribute<Person, Manufacturer> aCollectionAttribute = null;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// the attribute is on the class
IdentifiableType person = entityManufacturer_.getSupertype().getSupertype();
aCollectionAttribute = person.getDeclaredAttribute("historicalEmps");//, entityComputer.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
// java.lang.IllegalArgumentException: The declared attribute [corporateComputers] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present - however, it is declared on a superclass.
//iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(aCollectionAttribute);
// check managed type
assertEquals(msPerson_, aCollectionAttribute.getDeclaringType());
// check element type
//assertEquals(entityManufacturer, aCollectionAttribute.getDeclaringType());
// positive: check one level down from the root
expectedIAExceptionThrown = false;
Attribute<Corporation,?> aCollectionAttribute2 = null;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// the attribute is on the class
IdentifiableType corporation = entityManufacturer_.getSupertype();
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
aCollectionAttribute2 = corporation.getDeclaredAttribute("corporateComputers");//, entityComputer.getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
assertNotNull(aCollectionAttribute2);
// negative: check one level down from the root
expectedIAExceptionThrown = false;
aCollectionAttribute2 = null;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// the attribute is on the class
IdentifiableType corporation = entityManufacturer_.getSupertype();
aCollectionAttribute2 = corporation.getDeclaredAttribute("notFound");//, entityComputer.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
// java.lang.IllegalArgumentException: The declared attribute [corporateComputers] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present - however, it is declared on a superclass.
expectedIAExceptionThrown = true;
}
// we expect an IAE on getAttribute(name) if name does not exist
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
/**
* Return the single-valued attribute of the managed type that
* corresponds to the specified name in the represented type.
* @param name the name of the represented attribute
* @return single-valued attribute with the given name
* @throws IllegalArgumentException if attribute of the given
* name is not present in the managed type
*/
//SingularAttribute<? super X, ?> getSingularAttribute(String name);
/**
* Return the declared single-valued attribute of the managed
* type that corresponds to the specified name in the
* represented type.
* @param name the name of the represented attribute
* @return declared single-valued attribute of the given
* name
* @throws IllegalArgumentException if attribute of the given
* name is not declared in the managed type
*/
//SingularAttribute<X, ?> getDeclaredSingularAttribute(String name);
/**
* Return the Collection-valued attribute of the managed type
* that corresponds to the specified name.
* @param name the name of the represented attribute
* @return CollectionAttribute of the given name
* @throws IllegalArgumentException if attribute of the given
* name is not present in the managed type
*/
//CollectionAttribute<? super X, ?> getCollection(String name);
/**
* Return the Set-valued attribute of the managed type that
* corresponds to the specified name.
* @param name the name of the represented attribute
* @return SetAttribute of the given name
* @throws IllegalArgumentException if attribute of the given
* name is not present in the managed type
*/
//SetAttribute<? super X, ?> getSet(String name);
/**
* Return the List-valued attribute of the managed type that
* corresponds to the specified name.
* @param name the name of the represented attribute
* @return ListAttribute of the given name
* @throws IllegalArgumentException if attribute of the given
* name is not present in the managed type
*/
//ListAttribute<? super X, ?> getList(String name);
/**
* Return the Map-valued attribute of the managed type that
* corresponds to the specified name.
* @param name the name of the represented attribute
* @return MapAttribute of the given name
* @throws IllegalArgumentException if attribute of the given
* name is not present in the managed type
*/
//MapAttribute<? super X, ?, ?> getMap(String name);
/**
* Return the Collection-valued attribute declared by the
* managed type that corresponds to the specified name.
* @param name the name of the represented attribute
* @return declared CollectionAttribute of the given name
* @throws IllegalArgumentException if attribute of the given
* name is not declared in the managed type
*/
//CollectionAttribute<X, ?> getDeclaredCollection(String name);
expectedIAExceptionThrown = false;
try {
// UC4 - the attribute is on the immediate superclass
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
CollectionAttribute<Manufacturer, ?> anAttribute =
entityManufacturer_.getDeclaredCollection("corporateComputers");
} catch (IllegalArgumentException iae) {
// expecting
// java.lang.IllegalArgumentException: The declared attribute [corporateComputers] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present - however, it is declared on a superclass.
expectedIAExceptionThrown = true;
}
// IAE because the attribute is declared one level above
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
expectedIAExceptionThrown = false;
try {
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
CollectionAttribute<Corporation, ?> anAttribute =
msCorporation_.getDeclaredCollection("corporateComputers");
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
expectedIAExceptionThrown = false;
try {
//<E> ListAttribute<X, E> getDeclaredList(String name, Class<E> elementType);
// UC4 - the attribute is on the immediate superclass
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
CollectionAttribute<Manufacturer, Computer> anAttribute =
entityManufacturer_.getDeclaredCollection("corporateComputers", entityComputer_.getJavaType());
} catch (IllegalArgumentException iae) {
// expecting
// java.lang.IllegalArgumentException: The declared attribute [corporateComputers] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present - however, it is declared on a superclass.
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
// reset state
expectedIAExceptionThrown = false;
/**
* Return the Set-valued attribute declared by the managed type
* that corresponds to the specified name.
* @param name the name of the represented attribute
* @return declared SetAttribute of the given name
* @throws IllegalArgumentException if attribute of the given
* name is not declared in the managed type
*/
//SetAttribute<X, ?> getDeclaredSet(String name);
/**
* Return the List-valued attribute declared by the managed
* type that corresponds to the specified name.
* @param name the name of the represented attribute
* @return declared ListAttribute of the given name
* @throws IllegalArgumentException if attribute of the given
* name is not declared in the managed type
*/
//ListAttribute<X, ?> getDeclaredList(String name);
/**
* Return the Map-valued attribute declared by the managed
* type that corresponds to the specified name.
* @param name the name of the represented attribute
* @return declared MapAttribute of the given name
* @throws IllegalArgumentException if attribute of the given
* name is not declared in the managed type
*/
//MapAttribute<X, ?, ?> getDeclaredMap(String name);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getDeclaredAttributes_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getSingularAttribute_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getDeclaredSingularAttribute_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getSingularAttributes_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getDeclaredSingularAttributes_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getCollection_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getDeclaredCollection_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getSet_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getDeclaredSet_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getList_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything different?
public void testManagedType_getDeclaredList_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getMap_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
/**
* Return the Map-valued attribute of the managed type that
* corresponds to the specified name and Java key and value
* types.
* @param name the name of the represented attribute
* @param keyType the key type of the represented attribute
* @param valueType the value type of the represented attribute
* @return MapAttribute of the given name and key and value
* types
* @throws IllegalArgumentException if attribute of the given
* name and type is not present in the managed type
*/
//<K, V> MapAttribute<? super X, K, V> getMap(String name, Class<K> keyType, Class<V> valueType);
expectedIAExceptionThrown = false;
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMap", Integer.class, HardwareDesigner.class);
// verify the default key type is the not the Map key - rather that is is the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
//@OneToMany(cascade=ALL, mappedBy="mappedEmployer")
//private Map<String, HardwareDesigner> hardwareDesignersMap;// = new HashMap<String, HardwareDesigner>();
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_63:_20090824:_Add_Map_support_for_.40MapKey_to_MapAttribute
// Key is the primary key (PK) of the target entity - in this case HardwareDesigner which inherits its @Id from the Person @MappedSuperclass as '''Integer'''.
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present - or generics are set
//assertEquals(Integer.class, keyJavaType); // When @MapKey or generics are not present - we default to the PK
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getDeclaredMap_Type_param_declared_above_Method() {
}
// TODO: This is not testing anything?
public void testManagedType_getDeclaredMap_Type_param_not_found_iae_Method() {
}
public void testManagedType_getDeclaredMap_Type_param_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
/**
* Return the Map-valued attribute declared by the managed
* type that corresponds to the specified name and Java key
* and value types.
* @param name the name of the represented attribute
* @param keyType the key type of the represented attribute
* @param valueType the value type of the represented attribute
* @return declared MapAttribute of the given name and key
* and value types
* @throws IllegalArgumentException if attribute of the given
* name and type is not declared in the managed type
*/
//<K, V> MapAttribute<X, K, V> getDeclaredMap(String name, Class<K> keyType, Class<V> valueType);
expectedIAExceptionThrown = false;
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getDeclaredMap("hardwareDesignersMap", Integer.class, HardwareDesigner.class);
// verify the default key type is the not the Map key - rather that is is the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
//@OneToMany(cascade=ALL, mappedBy="mappedEmployer")
//private Map<String, HardwareDesigner> hardwareDesignersMap;// = new HashMap<String, HardwareDesigner>();
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_63:_20090824:_Add_Map_support_for_.40MapKey_to_MapAttribute
// Key is the primary key (PK) of the target entity - in this case HardwareDesigner which inherits its @Id from the Person @MappedSuperclass as '''Integer'''.
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present - or generics are set
//assertEquals(Integer.class, keyJavaType); // When @MapKey or generics are not present - we default to the PK
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getPluralAttributes_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getDeclaredPluralAttributes_internal_entity_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// This also tests getCollections()
// Here we start with 6 attributes in getAttributes() - this is reduced to 3 in getCollections before declared filtering
// In declaredCollections we reduce this to 2 because one of the types "corporateComputers" is on a mappedSuperclass
expectedIAExceptionThrown = false;
try {
Set<PluralAttribute<Manufacturer, ?, ?>> collections =
entityManufacturer_.getDeclaredPluralAttributes();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getDeclaredPluralAttributes_root_entity_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// This also tests getCollections()
expectedIAExceptionThrown = false;
Set<PluralAttribute<Computer, ?, ?>> collections =
entityComputer_.getDeclaredPluralAttributes();
assertNotNull(collections);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// Requires test model expansion before enabling test
public void testManagedType_getDeclaredPluralAttributes_root_mappedSuperclass_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
// This also tests getCollections()
expectedIAExceptionThrown = false;
// historicalComputers is defined as a plural declared attribute on a root mappedSuperclass
Set<PluralAttribute<Person, ?, ?>> collections =
msPerson_.getDeclaredPluralAttributes();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getAttribute_on_Entity_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// Test case
Attribute anAttribute = entityManufacturer_.getAttribute("hardwareDesignersMapUC4");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof MapAttribute);
assertEquals(entityHardwareDesigner_, ((MapAttribute)anAttribute).getElementType());
assertEquals(CollectionType.MAP, ((MapAttribute)anAttribute).getCollectionType());
assertEquals(String.class, ((MapAttribute)anAttribute).getKeyJavaType());
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
Bindable aPluralAttribute = entityManufacturer_.getMap("hardwareDesignersMapUC4");
assertEquals(HardwareDesigner.class, aPluralAttribute.getBindableJavaType());
assertEquals(Map.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getAttribute_on_MappedSuperclass_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
ManagedType<Corporation> msCorporation_ = metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Test case
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
Attribute anAttribute = msCorporation_.getAttribute("corporateComputers");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof CollectionAttribute);
assertEquals(entityComputer_, ((CollectionAttribute)anAttribute).getElementType());
assertEquals(CollectionType.COLLECTION, ((CollectionAttribute)anAttribute).getCollectionType());
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
Bindable aPluralAttribute = msCorporation_.getCollection("corporateComputers");
assertEquals(Computer.class, aPluralAttribute.getBindableJavaType());
assertEquals(Collection.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getAttribute_doesNotExist_on_Entity_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
Attribute anAttribute = null;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// Test case
anAttribute = entityManufacturer_.getAttribute("does_not_exist");
} catch (IllegalArgumentException iae) {
// We expect an exception
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertNull(anAttribute);
assertTrue("An IAE exception should have occured on a non-existent attribute.", expectedIAExceptionThrown);
}
}
public void testManagedType_getAttribute_doesNotExist_on_MappedSuperclass_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
Attribute anAttribute = null;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
ManagedType<Corporation> msCorporation_ = metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
// Test case
anAttribute = msCorporation_.getAttribute("does_not_exist");
} catch (IllegalArgumentException iae) {
// We expect an exception
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertNull(anAttribute);
assertTrue("An IAE exception should have occured on a non-existent attribute.", expectedIAExceptionThrown);
}
}
public void testManagedType_getDeclaredAttribute_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// Test case
Attribute anAttribute = entityManufacturer_.getDeclaredAttribute("hardwareDesignersMapUC4");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof MapAttribute);
assertEquals(entityHardwareDesigner_, ((MapAttribute)anAttribute).getElementType());
assertEquals(CollectionType.MAP, ((MapAttribute)anAttribute).getCollectionType());
assertEquals(String.class, ((MapAttribute)anAttribute).getKeyJavaType());
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
Bindable aPluralAttribute = entityManufacturer_.getMap("hardwareDesignersMapUC4");
assertEquals(HardwareDesigner.class, aPluralAttribute.getBindableJavaType());
assertEquals(Map.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getDeclaredListAttribute_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// Test case
Attribute anAttribute = entityManufacturer_.getDeclaredAttribute("hardwareDesigners");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof ListAttribute);
assertEquals(entityHardwareDesigner_, ((ListAttribute)anAttribute).getElementType());
assertEquals(CollectionType.LIST, ((ListAttribute)anAttribute).getCollectionType());
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
Bindable aPluralAttribute = entityManufacturer_.getDeclaredList("hardwareDesigners");
assertEquals(HardwareDesigner.class, aPluralAttribute.getBindableJavaType());
assertEquals(List.class, anAttribute.getJavaType());
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getDeclaredAttribute_above_throws_iae_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
Attribute anAttribute = null;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Test case
// attribute is declared on a mappedsuperclass
// Note: internally EclipseLink treats a ONE_TO_MANY as a MANY_TO_MANY for the case of a unidirectional mapping on a MappedSuperclass
anAttribute = entityManufacturer_.getDeclaredAttribute("corporateComputers ");
} catch (IllegalArgumentException iae) {
// We expect and exception
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertNull(anAttribute);
assertTrue("An IAE exception should have occured on an attribute declared above this entity.", expectedIAExceptionThrown);
}
}
public void testManagedType_getDeclaredAttribute_doesNotExist_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
Attribute anAttribute = null;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Test case
anAttribute = entityManufacturer_.getDeclaredAttribute("does_not_exist");
} catch (IllegalArgumentException iae) {
// We expect and exception
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertNull(anAttribute);
assertTrue("An IAE exception should have occured on a non-existent attribute.", expectedIAExceptionThrown);
}
}
public void testManagedType_getSingularAttribute_BASIC_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Test case
Attribute anAttribute = entityComputer_.getSingularAttribute("version");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.BASIC, anAttribute.getPersistentAttributeType());
assertFalse(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof SingularAttribute);
assertEquals(int.class, anAttribute.getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getSingularAttribute_EMBEDDED_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// not implemented
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getDeclaredSingularAttribute_on_Entity_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Test case
Attribute anAttribute = entityComputer_.getSingularAttribute("location");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.ONE_TO_ONE, anAttribute.getPersistentAttributeType());
assertFalse(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof SingularAttribute);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getDeclaredSingularAttribute_on_MappedSuperclass_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
// Test case
Attribute anAttribute = msPerson_.getSingularAttribute("name");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.BASIC, anAttribute.getPersistentAttributeType());
assertFalse(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof SingularAttribute);
assertEquals(String.class, anAttribute.getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getCollection_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getDeclaredCollection_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_getSet_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
SetAttribute<? super Manufacturer, Computer> computersAttribute =
entityManufacturer_.getSet("computers", Computer.class);
assertNotNull("computers SetAttribute should not be null in Manufacturer_", computersAttribute);
EntityTypeImpl<MultiCoreCPU> entityMultiCoreCPU_ = (EntityTypeImpl)metamodel.entity(MultiCoreCPU.class);
assertNotNull(entityMultiCoreCPU_);
SetAttribute<? super MultiCoreCPU, Core> processorsAttribute =
entityMultiCoreCPU_.getSet("cores", Core.class);
assertNotNull("cores SetAttribute should not be null in MultiCoreCPU_", processorsAttribute);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getDeclaredSet_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getList_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getDeclaredList_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getMap_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testManagedType_getDeclaredMap_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testManagedType_variantCases() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
MappedSuperclassTypeImpl<Person> msPerson_ = (MappedSuperclassTypeImpl)metamodel.managedType(Person.class);
assertNotNull(msPerson_);
MappedSuperclassTypeImpl<Corporation> msCorporation_ = (MappedSuperclassTypeImpl)metamodel.managedType(Corporation.class);
assertNotNull(msCorporation_);
EntityTypeImpl<GalacticPosition> entityLocation_ =(EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
EntityTypeImpl<Memory> entityMemory_ = (EntityTypeImpl)metamodel.entity(Memory.class);
assertNotNull(entityMemory_);
// Actual Test Case
// try a getAttribute on a missing attribute - should cause an IAE
boolean iae1thrown = false;
try {
entityManufacturer_.getAttribute("_unknownAttribute");
} catch (IllegalArgumentException expectedIAE) {
// java.lang.IllegalArgumentException: The attribute [_unknownAttribute] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present.
iae1thrown = true;
}
// verify that we got an expected exception
assertTrue("Expected thrown IllegalArgumentException", iae1thrown);
// try a getSet on an unknown Set attribute - should still cause a IAE
iae1thrown = false;
try {
entityManufacturer_.getSet("_unknownAttribute");
} catch (IllegalArgumentException expectedIAE) {
// java.lang.IllegalArgumentException: The attribute [_unknownAttribute] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present.
iae1thrown = true;
}
// verify that we got an expected exception
assertTrue("Expected thrown IllegalArgumentException", iae1thrown);
// try a getSet on an unknown Set attribute - but with the right type (but how do we really know the type) - should still cause the same IAE
iae1thrown = false;
try {
entityManufacturer_.getSet("_unknownSet", entityComputer_.getJavaType());
} catch (IllegalArgumentException expectedIAE) {
// java.lang.IllegalArgumentException: The attribute [_unknownSet] from the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] is not present.
iae1thrown = true;
}
// verify that we got an expected exception
assertTrue("Expected thrown IllegalArgumentException", iae1thrown);
// try a getSet on a known Set attribute - but with the wrong type like another EntityType Memory - should cause a different IAE
iae1thrown = false;
try {
entityManufacturer_.getSet("computers", entityMemory_.getJavaType());
} catch (IllegalArgumentException expectedIAE) {
//expectedIAE.printStackTrace();
//java.lang.IllegalArgumentException: Expected attribute type [class org.eclipse.persistence.testing.models.jpa.metamodel.Memory] on the existing attribute [computers] on the managed type [ManagedTypeImpl[RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer --> [DatabaseTable(CMP3_MM_MANUF)])]] but found attribute type [org.eclipse.persistence.testing.models.jpa.metamodel.Computer].
iae1thrown = true;
} catch (Exception unexpectedException) {
unexpectedException.printStackTrace();
}
// verify that we got an expected exception
assertTrue("Expected thrown IllegalArgumentException", iae1thrown);
expectedIAExceptionThrown = false;
try {
// Ask for a Collection using a String type - invalid
entityManufacturer_.getDeclaredCollection("name", String.class);
} catch (Exception e) {
// This exception is expected here
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
// reset exception flag
expectedIAExceptionThrown = false;
// get Mapped Superclass objects
//Map<Class, MappedSuperclassTypeImpl<?>> mappedSuperclasses = ((MetamodelImpl)metamodel).getMappedSuperclasses();
Set<MappedSuperclassTypeImpl<?>> mappedSuperclasses = ((MetamodelImpl)metamodel).getMappedSuperclasses();
int count = 0;
for (MappedSuperclassTypeImpl msType_ : mappedSuperclasses) {
ClassDescriptor descriptor = msType_.getDescriptor();
for (DatabaseMapping mapping : descriptor.getMappings()) {
count++;
}
}
// we should have had a non-zero number of mappings on the descriptors
if(count < 1) {
fail("No mappedSuperclass mappings were found");
}
assertTrue(count > 0);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
/**
* This test will verify that MapAttribute instance have their elementType set correctly.
* The elementType corresponds to the 3rd V parameter on the class definition - which is the Map value.
* {@code MapAttributeImpl<X, K, V>}
*/
public void testMapAtributeElementTypeWhenMapKeySetButNameAttributeIsDefaulted() {
boolean exceptionThrown = false;
EntityManager em = null;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityType<Manufacturer> entityManufacturer = metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer);
Attribute hardwareDesignersMap = entityManufacturer.getAttribute("hardwareDesignersMapUC8");
assertNotNull(hardwareDesignersMap);
assertTrue(hardwareDesignersMap.isCollection());
assertTrue(hardwareDesignersMap instanceof MapAttributeImpl);
MapAttribute<? super Manufacturer, ?, ?> manufactuerHardwareDesignersMap = entityManufacturer.getMap("hardwareDesignersMapUC8");
// Verify owning type
assertNotNull(manufactuerHardwareDesignersMap);
assertEquals(entityManufacturer, manufactuerHardwareDesignersMap.getDeclaringType());
// Verify Map Key - should be PK of owning type
assertEquals(Integer.class, manufactuerHardwareDesignersMap.getKeyJavaType());
// Verify Map Value
assertEquals(HardwareDesigner.class, manufactuerHardwareDesignersMap.getElementType().getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAtributeElementTypeWhenMapKeySetAndNameAttributeSet() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityType<Manufacturer> entityManufacturer = metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer);
Attribute hardwareDesignersMap = entityManufacturer.getAttribute("hardwareDesignersMapUC4");
assertNotNull(hardwareDesignersMap);
assertTrue(hardwareDesignersMap.isCollection());
assertTrue(hardwareDesignersMap instanceof MapAttributeImpl);
MapAttribute<? super Manufacturer, ?, ?> manufactuerHardwareDesignersMap = entityManufacturer.getMap("hardwareDesignersMapUC4");
// Verify owning type
assertNotNull(manufactuerHardwareDesignersMap);
assertEquals(entityManufacturer, manufactuerHardwareDesignersMap.getDeclaringType());
// Verify Map Key - should not be PK of owning type
assertEquals(String.class, manufactuerHardwareDesignersMap.getKeyJavaType());
// Verify Map Value
assertEquals(HardwareDesigner.class, manufactuerHardwareDesignersMap.getElementType().getJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyJavaType_UC0_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the Java type of the map key.
* @return Java key type
*/
//Class<K> getKeyJavaType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMap");
// verify the default key type is the not the Map key - rather that is is the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
//@OneToMany(cascade=ALL, mappedBy="mappedEmployer")
//private Map<String, HardwareDesigner> hardwareDesignersMap;// = new HashMap<String, HardwareDesigner>();
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_63:_20090824:_Add_Map_support_for_.40MapKey_to_MapAttribute
// Key is the primary key (PK) of the target entity - in this case HardwareDesigner which inherits its @Id from the Person @MappedSuperclass as '''Integer'''.
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present - or generics are set
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyJavaType_UC1a_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the Java type of the map key.
* @return Java key type
*/
//Class<K> getKeyJavaType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC1a");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 1a: Generics KV set, no @MapKey present, PK is singular field
//@OneToMany(cascade=ALL, mappedBy="mappedEmployerUC1a")
//private Map<String, HardwareDesigner> hardwareDesignersMapUC1a;
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present - or generics are set
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyJavaType_UC2_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the Java type of the map key.
* @return Java key type
*/
//Class<K> getKeyJavaType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC2");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 2: Generics KV set, @MapKey is present
//@OneToMany(cascade=ALL, mappedBy="mappedEmployerUC2")
//@MapKey(name="name")
//private Map<String, HardwareDesigner> hardwareDesignersMapUC2;
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyJavaType_UC4_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the Java type of the map key.
* @return Java key type
*/
//Class<K> getKeyJavaType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC4");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 4: No Generics KV set, @MapKey is present
//@OneToMany(targetEntity=HardwareDesigner.class, cascade=ALL, mappedBy="mappedEmployerUC4")
//@MapKey(name="name")
//private Map hardwareDesignersMapUC4;
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyJavaType_UC7_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the Java type of the map key.
* @return Java key type
*/
//Class<K> getKeyJavaType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC7");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 7: Generics KV set, targetEntity is also set, @MapKey is *(set/unset)
//@OneToMany(targetEntity=HardwareDesigner.class, cascade=ALL, mappedBy="mappedEmployerUC7")
// Same as UC1a - that is missing the @MapKey
//private Map<String, HardwareDesigner> hardwareDesignersMapUC7;
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present - or generics are set
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyJavaType_UC8_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the Java type of the map key.
* @return Java key type
*/
//Class<K> getKeyJavaType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC8");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 8: Generics KV set, targetEntity not set, @MapKey is set but name attribute is defaulted
//@OneToMany(targetEntity=HardwareDesigner.class, cascade=ALL, mappedBy="mappedEmployerUC8")
// Same as UC1a - that is missing the @MapKey name attribute
//private Map<String, HardwareDesigner> hardwareDesignersMapUC8;
Type keyType = anAttribute.getKeyType();
assertEquals(Integer.class, keyJavaType); // When @MapKey or generics are not present - we default to the PK
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// See
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_86:_20090921:_Handle_Embeddable_Type_keyType_in_MapAttributeImpl_constructor
public void testMapAttribute_getKeyJavaType_UC9_DI86_Embeddable_IdClass_keyType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the Java type of the map key.
* @return Java key type
*/
//Class<K> getKeyJavaType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("enclosureByBoardMapUC9");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC9: no targetEntity, no MapKey, but generics are set (MapKey has an IdClass with an Embeddable)
//@OneToMany(cascade=CascadeType.ALL, mappedBy="mappedManufacturerUC9")
//private Map<Board, Enclosure> enclosureByBoardMapUC9;
Type keyType = anAttribute.getKeyType();
assertEquals(Board.class, keyJavaType); // When @MapKey(name="name") is present or we use generics
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.ENTITY, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyType_UC0_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMap");
// verify the default key type is the not the Map key - rather that is is the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
//@OneToMany(cascade=ALL, mappedBy="mappedEmployer")
//private Map<String, HardwareDesigner> hardwareDesignersMap;// = new HashMap<String, HardwareDesigner>();
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_63:_20090824:_Add_Map_support_for_.40MapKey_to_MapAttribute
// Key is the primary key (PK) of the target entity - in this case HardwareDesigner which inherits its @Id from the Person @MappedSuperclass as '''Integer'''.
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present - or generics are set
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyType_UC1a_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC1a");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 1a: Generics KV set, no @MapKey present, PK is singular field
//@OneToMany(cascade=ALL, mappedBy="mappedEmployerUC1a")
//private Map<String, HardwareDesigner> hardwareDesignersMapUC1a;
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present - or generics are set
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyType_UC2_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC2");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 2: Generics KV set, @MapKey is present
//@OneToMany(cascade=ALL, mappedBy="mappedEmployerUC2")
//@MapKey(name="name")
//private Map<String, HardwareDesigner> hardwareDesignersMapUC2;
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyType_UC4_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC4");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 4: No Generics KV set, @MapKey is present
//@OneToMany(targetEntity=HardwareDesigner.class, cascade=ALL, mappedBy="mappedEmployerUC4")
//@MapKey(name="name")
//private Map hardwareDesignersMapUC4;
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyType_UC7_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC7");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 7: Generics KV set, targetEntity is also set, @MapKey is *(set/unset)
//@OneToMany(targetEntity=HardwareDesigner.class, cascade=ALL, mappedBy="mappedEmployerUC7")
// Same as UC1a - that is missing the @MapKey
//private Map<String, HardwareDesigner> hardwareDesignersMapUC7;
Type keyType = anAttribute.getKeyType();
assertEquals(String.class, keyJavaType); // When @MapKey(name="name") is present - or generics are set
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMapAttribute_getKeyType_UC8_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("hardwareDesignersMapUC8");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC 8: Generics KV set, targetEntity not set, @MapKey is set but name attribute is defaulted
//@OneToMany(targetEntity=HardwareDesigner.class, cascade=ALL, mappedBy="mappedEmployerUC8")
// Same as UC1a - that is missing the @MapKey name attribute
//private Map<String, HardwareDesigner> hardwareDesignersMapUC8;
Type keyType = anAttribute.getKeyType();
assertEquals(Integer.class, keyJavaType); // When @MapKey is not present or missing name attribute - we default to the PK
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.BASIC, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// see
// http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_86:_20090921:_Handle_Embeddable_Type_keyType_in_MapAttributeImpl_constructor
public void testMapAttribute_getKeyType_UC9_DI86_Embeddable_IdClass_keyType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Manufacturer, ?, ?> anAttribute =
entityManufacturer_.getMap("enclosureByBoardMapUC9");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC9: no targetEntity, no MapKey, but generics are set (MapKey has an IdClass with an Embeddable)
//@OneToMany(cascade=CascadeType.ALL, mappedBy="mappedManufacturerUC9")
//private Map<Board, Enclosure> enclosureByBoardMapUC9;
Type keyType = anAttribute.getKeyType();
assertEquals(Board.class, keyJavaType); // When @MapKey(name="name") is present or we use generics
assertNotNull(keyType);
assertTrue(keyType instanceof Type);
assertEquals(Type.PersistenceType.ENTITY, keyType.getPersistenceType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// This test verifies the workaround for 294811
public void testMapAttribute_getKeyType_294811_UC10_DI86_Embeddable_IdClass_keyType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Computer, ?, ?> anAttribute =
entityComputer_.getMap("enclosuresUC10");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC10: no targetEntity, no MapKey attribute, but generics are set (MapKey has an IdClass with an Embeddable)
//@OneToMany(mappedBy="computerUC10", cascade=ALL, fetch=EAGER)
//@MapKey // key defaults to an instance of the composite pk class
//private Map<EnclosureIdClassPK, Enclosure> enclosuresUC10;
Type keyType = anAttribute.getKeyType();
assertEquals(EnclosureIdClassPK.class, keyJavaType); // When @MapKey(name="name") is present or we use generics
assertNotNull(keyType);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// This test verifies the workaround for 294811
public void testMapAttribute_getKeyType_294811_UC13_DI86_Embedded_keyType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Computer, ?, ?> anAttribute =
entityComputer_.getMap("positionUniUC13");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC13: mapKey defined via generics and is an Embeddable (EmbeddedId) java class defined as an IdClass on the element(value) class
// However, here we make the owning OneToMany - unidirectional and an effective ManyToMany
//@MapKey // key defaults to an instance of the composite pk class
//private Map<EmbeddedPK, GalacticPosition> positionUniUC13;
Type keyType = anAttribute.getKeyType();
assertEquals(EmbeddedPK.class, keyJavaType); // When @MapKey(name="name") is present or we use generics
assertNotNull(keyType);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// This test verifies the workaround for 294811
public void testMapAttribute_getKeyType_294811_UC12_DI86_Embedded_keyType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
MapAttribute<? super Computer, ?, ?> anAttribute =
entityComputer_.getMap("positionUC12");
// verify the key type is the Map key - not the managedType PK
Class keyJavaType = anAttribute.getKeyJavaType();
// UC12: mapKey defined via generics and is an Embeddable (EmbeddedId) java class defined as an IdClass on the element(value) class
//@OneToMany(mappedBy="computerUC12", cascade=ALL, fetch=EAGER)
//@MapKey // key defaults to an instance of the composite pk class
//private Map<EmbeddedPK, GalacticPosition> positionUC12;
Type keyType = anAttribute.getKeyType();
assertEquals(EmbeddedPK.class, keyJavaType); // When @MapKey(name="name") is present or we use generics
assertNotNull(keyType);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// TODO: This is not testing anything?
public void testMapAttribute_getKeyType_UC9_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the type representing the key type of the map.
* @return type representing key type
*/
//Type<K> getKeyType();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// TODO: This is not testing anything?
public void testMappedSuperclassType() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
// Interface is empty - however we will test native functionality
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testMetamodel_managedType_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the metamodel managed type representing the
* entity, mapped superclass, or embeddable class.
* @param cls the type of the represented managed class
* @return the metamodel managed type
* @throws IllegalArgumentException if not a managed class
*/
//<X> ManagedType<X> managedType(Class<X> cls);
// test normal path (subtype = Basic)
/* expectedIAExceptionThrown = false;
try {
Type<Manufacturer> aType = metamodel.type(Basic.class);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
*/
// test normal path (subtype = Embeddable)
expectedIAExceptionThrown = false;
try {
Type<EmbeddedPK> aType = metamodel.managedType(EmbeddedPK.class);
assertFalse(((TypeImpl)aType).isEntity());
assertFalse(((TypeImpl)aType).isMappedSuperclass());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
// test normal path: (subtype = Entity)
expectedIAExceptionThrown = false;
try {
Type<Manufacturer> aType = metamodel.managedType(Manufacturer.class);
assertTrue(((TypeImpl)aType).isEntity());
assertFalse(((TypeImpl)aType).isMappedSuperclass());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
// test normal path: (subtype = MappedSuperclass)
expectedIAExceptionThrown = false;
try {
Type<Person> aType = metamodel.managedType(Person.class);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
// test variant path: null does not cause an IAE in this case because its return type cannot be checked for isManagedType
expectedIAExceptionThrown = false;
// Set type to a temporary type - to verify that we get null and not confuse a return of null with an "unset" null.
Type<?> aTypeFromNullClass = metamodel.managedType(Manufacturer.class);
try {
aTypeFromNullClass = metamodel.managedType(null);
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
expectedIAExceptionThrown = true;
}
//assertNull(aTypeFromNullClass);
assertTrue("IllegalArgumentException expected on Metamodel.managedType(null)",expectedIAExceptionThrown);
// Type is basic - throw IAE
expectedIAExceptionThrown = false;
try {
Type<Integer> aType = metamodel.managedType(Integer.class);
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertTrue("IllegalArgumentException expected on Metamodel.managedType(Integer.class)",expectedIAExceptionThrown);
// test variant path: wrong type (java simple type)
expectedIAExceptionThrown = false;
try {
Type<?> aType = metamodel.embeddable(Integer.class);
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertTrue(expectedIAExceptionThrown);
// reset exception flag
expectedIAExceptionThrown = false;
// test variant path: wrong type (BasicType)
// get some static (non-runtime) attributes parameterized by <Owning type, return Type>
// Note: the String based attribute names are non type-safe
/*
aMember CollectionAttributeImpl<X,E> (id=183)
elementType BasicImpl<X> (id=188)
javaClass Class<T> (org.eclipse.persistence.testing.models.jpa.metamodel.Computer) (id=126)
managedType EntityTypeImpl<X> (id=151)
descriptor RelationalDescriptor (id=156)
javaClass Class<T> (org.eclipse.persistence.testing.models.jpa.metamodel.Manufacturer) (id=129)
members HashMap<K,V> (id=157)
metamodel MetamodelImpl (id=52)
supertype null
mapping OneToManyMapping (id=191)
*/
// The attributes are in the field ManagedTypeImpl.members
// The managedType is the owner of the attribute
//hardwareDesigners=CollectionAttribute[org.eclipse.persistence.mappings.OneToManyMapping[hardwareDesigners]],
//computers=CollectionAttribute[org.eclipse.persistence.mappings.OneToManyMapping[computers]],
// 20090707: We are getting a CCE because "all" Collections are defaulting to List
// when they are lazy instantiated as IndirectList if persisted as a List independent of what the OneToOne mapping is defined as
// jakarta.persistence.metamodel.CollectionAttribute<? super Manufacturer, Computer> computersAttribute =
// entityManufacturer.getCollection("computers", Computer.class);
// jakarta.persistence.metamodel.CollectionAttribute<? super Manufacturer, Computer> computersAttribute2 =
// entityManufacturer.getCollection("computers", Computer.class);
jakarta.persistence.metamodel.SetAttribute<? super Manufacturer, Computer> computersAttribute =
entityManufacturer_.getSet("computers", Computer.class);
//version=Attribute[org.eclipse.persistence.mappings.DirectToFieldMapping[version-->CMP3_MM_MANUF.MANUF_VERSION]],
//name=Attribute[org.eclipse.persistence.mappings.DirectToFieldMapping[name-->CMP3_MM_MANUF.NAME]],
//id=Attribute[org.eclipse.persistence.mappings.DirectToFieldMapping[id-->CMP3_MM_MANUF.PERSON_ID]]
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testMetamodel_getEmbeddables_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the metamodel embeddable types.
* @return the metamodel embeddable types
*/
//java.util.Set<EmbeddableType<?>> getEmbeddables();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testMetamodel_getEntities_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the metamodel entity types.
* @return the metamodel entity types
*/
//java.util.Set<EntityType<?>> getEntities();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testMetamodel_getManagedTypes_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the metamodel managed types.
* @return the metamodel managed types
*/
//java.util.Set<ManagedType<?>> getManagedTypes();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testMetamodel_embeddable_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the metamodel embeddable type representing the
* embeddable class.
* @param cls the type of the represented embeddable class
* @return the metamodel embeddable type
* @throws IllegalArgumentException if not an embeddable class
*/
//<X> EmbeddableType<X> embeddable(Class<X> cls);
// test normal path
expectedIAExceptionThrown = false;
try {
EmbeddableType<EmbeddedPK> aType = metamodel.embeddable(EmbeddedPK.class);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
// test variant path: null causes IAE
expectedIAExceptionThrown = false;
try {
EmbeddableType<Manufacturer> aType = metamodel.embeddable(null);
} catch (IllegalArgumentException iae) {
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
// test variant path: wrong type (subtype = Entity)
expectedIAExceptionThrown = false;
try {
EmbeddableType<Manufacturer> aType = metamodel.embeddable(Manufacturer.class);
} catch (IllegalArgumentException iae) {
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
// test variant path: wrong type (java simple type)
expectedIAExceptionThrown = false;
try {
EmbeddableType<?> aType = metamodel.embeddable(Integer.class);
} catch (IllegalArgumentException iae) {
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
// reset state
expectedIAExceptionThrown = false;
} catch (IllegalArgumentException iae) {
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testMetamodel_entity_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
// Actual Test Case
/**
* Return the metamodel entity type representing the entity.
* @param cls the type of the represented entity
* @return the metamodel entity type
* @throws IllegalArgumentException if not an entity
*/
//<X> EntityType<X> entity(Class<X> cls);
// test normal path
expectedIAExceptionThrown = false;
try {
EntityType<Manufacturer> aType = metamodel.entity(Manufacturer.class);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
}
assertFalse(expectedIAExceptionThrown);
// test variant path: null causes IAE
expectedIAExceptionThrown = false;
try {
EntityType<Manufacturer> aType = metamodel.entity(null);
} catch (IllegalArgumentException iae) {
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
// test variant path: wrong type (java simple type)
expectedIAExceptionThrown = false;
try {
EntityType<Integer> aType = metamodel.entity(Integer.class);
} catch (IllegalArgumentException iae) {
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
// reset exception flag
expectedIAExceptionThrown = false;
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testPluralAttribute_CollectionType_enum() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
//public static enum CollectionType {COLLECTION, SET, LIST, MAP}
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// TODO: This is not testing anything?
public void testPluralAttribute_getCollectionType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
//public static enum CollectionType {COLLECTION, SET, LIST, MAP}
/**
* Return the collection type.
* @return collection type
*/
//CollectionType getCollectionType();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// TODO: This is not testing anything?
public void testPluralAttribute_getElementType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
/**
* Return the type representing the element type of the
* collection.
* @return element type
*/
//Type<E> getElementType();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// TODO: This is not testing anything?
public void testSetAttribute() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
// The interface is empty - we will test native functionality
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testSingularAttribute_isOptional_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// Composite table FK's that include a MappedSuperclass
// get an Attribute<Container, Type==String>
Attribute nameAttribute = entityManufacturer_.getAttribute("name");
assertTrue(null != nameAttribute);
/**
* Can the attribute be null.
* @return boolean indicating whether the attribute can
* be null
*/
//boolean isOptional();
assertFalse(((AttributeImpl)nameAttribute).isPlural());
assertFalse(((SingularAttributeImpl)nameAttribute).isVersion());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testSingularAttribute_isId_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// Composite table FK's that include a MappedSuperclass
// get an Attribute<Container, Type==String>
Attribute nameAttribute = entityManufacturer_.getAttribute("name");
assertTrue(null != nameAttribute);
/**
* Is the attribute an id attribute. This method will return
* true if the attribute is an attribute that corresponds to
* a simple id, an embedded id, or an attribute of an id class.
* @return boolean indicating whether the attribute is an id
*/
//boolean isId();
assertFalse(((AttributeImpl)nameAttribute).isPlural());
assertFalse(((SingularAttributeImpl)nameAttribute).isVersion());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testSingularAttribute_isVersion_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
EntityTypeImpl<HardwareDesigner> entityHardwareDesigner_ = (EntityTypeImpl)metamodel.entity(HardwareDesigner.class);
assertNotNull(entityHardwareDesigner_);
// Composite table FK's that include a MappedSuperclass
// get an Attribute<Container, Type==String>
Attribute nameAttribute = entityManufacturer_.getAttribute("name");
assertTrue(null != nameAttribute);
/**
* Is the attribute a version attribute.
* @return boolean indicating whether or not attribute is
* a version attribute
*/
//public boolean isVersion() {
assertFalse(((AttributeImpl)nameAttribute).isPlural());
assertFalse(((SingularAttributeImpl)nameAttribute).isVersion());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testSingularAttribute_getBindableType_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
//public static enum BindableType {SINGULAR_ATTRIBUTE, PLURAL_ATTRIBUTE, ENTITY_TYPE}
/**
* Return the bindable type of the represented object.
* @return bindable type
*/
//BindableType getBindableType();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// Same as Entity unless used on Basic
public void testSingularAttribute_getBindableJavaType_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
/**
* Return the Java type of the represented object.
* If the bindable type of the object is <code>PLURAL_ATTRIBUTE</code>,
* the Java element type is returned. If the bindable type is
* <code>SINGULAR_ATTRIBUTE</code> or <code>ENTITY_TYPE</code>,
* the Java type of the
* represented entity or attribute is returned.
* @return Java type
*/
//Class<T> getBindableJavaType();
Attribute anAttribute = entityComputer_.getSingularAttribute("location");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.ONE_TO_ONE, anAttribute.getPersistentAttributeType());
assertFalse(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof SingularAttribute);
assertEquals(Type.PersistenceType.ENTITY, entityComputer_.getPersistenceType());
Bindable aSingularAttribute = entityComputer_.getSingularAttribute("location");
assertEquals(GalacticPosition.class, aSingularAttribute.getBindableJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// same as Singular unless used on Basic
public void testEntityAttribute_getBindableJavaType_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
EntityTypeImpl<Computer> entityComputer_ = (EntityTypeImpl)metamodel.entity(Computer.class);
assertNotNull(entityComputer_);
/**
* Return the Java type of the represented object.
* If the bindable type of the object is <code>PLURAL_ATTRIBUTE</code>,
* the Java element type is returned. If the bindable type is
* <code>SINGULAR_ATTRIBUTE</code> or <code>ENTITY_TYPE</code>,
* the Java type of the
* represented entity or attribute is returned.
* @return Java type
*/
//Class<T> getBindableJavaType();
Attribute anAttribute = entityComputer_.getSingularAttribute("location");
assertNotNull(anAttribute);
assertEquals(PersistentAttributeType.ONE_TO_ONE, anAttribute.getPersistentAttributeType());
assertFalse(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof SingularAttribute);
assertEquals(Type.PersistenceType.ENTITY, entityComputer_.getPersistenceType());
Bindable aSingularAttribute = entityComputer_.getSingularAttribute("location");
assertEquals(GalacticPosition.class, aSingularAttribute.getBindableJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
public void testPluralAttribute_getBindableJavaType_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
/**
* Return the Java type of the represented object.
* If the bindable type of the object is <code>PLURAL_ATTRIBUTE</code>,
* the Java element type is returned. If the bindable type is
* <code>SINGULAR_ATTRIBUTE</code> or <code>ENTITY_TYPE</code>,
* the Java type of the
* represented entity or attribute is returned.
* @return Java type
*/
//Class<T> getBindableJavaType();
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertEquals(Type.PersistenceType.ENTITY, entityManufacturer_.getPersistenceType());
Attribute anAttribute = entityManufacturer_.getAttribute("computers");
assertEquals(PersistentAttributeType.ONE_TO_MANY, anAttribute.getPersistentAttributeType());
assertNotNull(anAttribute);
assertTrue(((AttributeImpl)anAttribute).isPlural());
assertTrue(anAttribute instanceof PluralAttribute);
Bindable aPluralAttribute = entityManufacturer_.getSet("computers");
assertEquals(Computer.class, aPluralAttribute.getBindableJavaType());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testSingularAttribute_getJavaType_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
/**
* Return the Java type of the represented attribute.
* @return Java type
*/
//public Class<T> getJavaType() {
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testSingularAttribute_getType_Method() {
EntityManager em = null;
boolean expectedIAExceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
/**
* Return the type that represents the type of the attribute.
* @return type of attribute
*/
//public Type<T> getType() {
/**
* Return the String representation of the receiver.
*/
//public String toString() {
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
expectedIAExceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", expectedIAExceptionThrown);
}
}
// TODO: This is not testing anything?
public void testType_PersistenceType_enum() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
//public static enum PersistenceType { ENTITY, EMBEDDABLE, MAPPED_SUPERCLASS, BASIC }
/**
* Return the persistence type.
* @return persistence type
*/
//PersistenceType getPersistenceType();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// TODO: This is not testing anything?
public void testType_getPersistenceType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
//public static enum PersistenceType { ENTITY, EMBEDDABLE, MAPPED_SUPERCLASS, BASIC }
/**
* Return the persistence type.
* @return persistence type
*/
//PersistenceType getPersistenceType();
/**
* Return the represented Java type.
* @return Java type
*/
//Class<X> getJavaType();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// TODO: This is not testing anything?
public void testType_getJavaType_Method() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Actual Test Case
//public static enum PersistenceType { ENTITY, EMBEDDABLE, MAPPED_SUPERCLASS, BASIC }
/**
* Return the represented Java type.
* @return Java type
*/
//Class<X> getJavaType();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testOutOfSpecificationInternalAPI() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
// Actual Test Case
EntityTypeImpl<ArrayProcessor> entityArrayProcessor_ =(EntityTypeImpl) metamodel.entity(ArrayProcessor.class);
assertNotNull(entityArrayProcessor_);
EntityTypeImpl<Processor> entityProcessor_ = (EntityTypeImpl) metamodel.entity(Processor.class);
assertNotNull(entityProcessor_);
// verify all Types have their javaClass set
Collection<TypeImpl<?>> types = ((MetamodelImpl)metamodel).getTypes().values();
assertNotNull(types);
for(TypeImpl type : types) {
assertNotNull(type);
assertNotNull(type.getJavaType());
}
// verify all embeddables are only embeddables
Set<EmbeddableType<?>> embeddables = metamodel.getEmbeddables();
assertNotNull(embeddables);
for(EmbeddableType embeddable : embeddables) {
// This method works only on EntityType
assertNotNull(embeddable);
assertTrue(embeddable instanceof EmbeddableTypeImpl);
}
// verify all entities are only entities
Set<EntityType<?>> entities = metamodel.getEntities();
assertNotNull(entities);
for(EntityType entity : entities) {
// This method works only on EntityType
assertNotNull(entity.getName());
assertTrue(entity instanceof EntityTypeImpl);
}
// Verify all Attributes and their element and declaring/managed types
List<Attribute> allAttributes = ((MetamodelImpl)metamodel).getAllManagedTypeAttributes();
assertNotNull(allAttributes);
assertEquals(METAMODEL_ALL_ATTRIBUTES_SIZE, allAttributes.size());
// Why do we have this function? So we can verify attribute integrity
for(Attribute anAttribute : allAttributes) {
ManagedType declaringType = anAttribute.getDeclaringType();
assertNotNull(declaringType);
Type elementType = null;
if(((AttributeImpl)anAttribute).isPlural()) {
elementType = ((PluralAttributeImpl)anAttribute).getElementType();
} else {
elementType = ((SingularAttributeImpl)anAttribute).getType();
}
assertNotNull("elementType should not be null", elementType);
// Since the javaType may be computed off the elementType - it must not be null or we will get a NPE below
Class javaType = anAttribute.getJavaType();
}
boolean expectedIAExceptionThrown = false;
// Check entity-->entity hierarchy
// Processor:entity (Board boards)
// +--VectorProcessor
Set<Attribute<ArrayProcessor, ?>> entityArrayProcessorDeclaredAttributes = entityArrayProcessor_.getDeclaredAttributes();
assertEquals(1, entityArrayProcessorDeclaredAttributes.size());
// verify getting the attribute directly
Attribute<ArrayProcessor, ?> entityArrayProcessorDeclaredAttribute = entityArrayProcessor_.getDeclaredAttribute("speed");
// verify we do get an IAE on declared type above
try {
Attribute<ArrayProcessor, ?> entityArrayProcessorDeclaredAttributeThatIsNonExistent = entityArrayProcessor_.getDeclaredAttribute("non-existent");
} catch (IllegalArgumentException iae) {
// expecting no exception
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
// Verify we get an IAE on a type declared above
try {
Attribute<ArrayProcessor, ?> entityArrayProcessorDeclaredAttributeThatIsDeclaredAbove = entityArrayProcessor_.getDeclaredAttribute("id");
} catch (IllegalArgumentException iae) {
// expecting no exception
expectedIAExceptionThrown = true;
}
assertTrue("Expected thrown IllegalArgumentException", expectedIAExceptionThrown);
Set<Attribute<Processor, ?>> entityProcessorDeclaredAttributes = entityProcessor_.getDeclaredAttributes();
assertEquals(3, entityProcessorDeclaredAttributes.size());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
public void testToStringOverrides() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull(metamodel);
// Actual Test Case
// Test toString() overrides
EntityTypeImpl<Manufacturer> entityManufacturer_ = (EntityTypeImpl)metamodel.entity(Manufacturer.class);
assertNotNull(entityManufacturer_);
assertNotNull(metamodel.toString());
assertNotNull(entityManufacturer_.getSingularAttribute("aBooleanObject").toString());
// In the absence of a getPluralAttribute()
assertNotNull(entityManufacturer_.getAttribute("computers").toString());
assertNotNull(entityManufacturer_.getList("hardwareDesigners").toString());
assertNotNull(entityManufacturer_.getMap("hardwareDesignersMap").toString());
assertNotNull(entityManufacturer_.getSet("computers").toString());
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// 316991: regression test getJavaMember() on field level access Entity attribute @OneToOne on an Entity
/**
* This test will verify that a transient superclass (non-entity, non-mappedSuperclass)
* exists as a BasicType (it has no attributes), and that any inheriting Entity either
* directly subclassing or indirectly subclassing via a MappedSuperclass inheritance chain
* - does not pick up non-persistence fields that normally would be inherited.
* (The fields exist in Java but not in ORM:Metamodel)
* The transient class must have no JPA annotations.
*/
public void testTransientNonEntityNonMappedSuperclass_SuperclassOfEntity_Exists_as_BasicType() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Verify that the non-Entity/non-MappedSuperclass is a BasicType
Type positionNonEntity = ((MetamodelImpl)metamodel).getType(Position.class);
assertNotNull(positionNonEntity);
assertEquals(Type.PersistenceType.BASIC, positionNonEntity.getPersistenceType());
// Get direct inheriting subclass
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
// Verify it is a BasicType in other INTERNAL API ways
assertFalse(((TypeImpl)positionNonEntity).isMappedSuperclass());
assertFalse(((TypeImpl)positionNonEntity).isEntity());
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
exceptionThrown = true;
} finally {
cleanup(em);
assertFalse("An IAE exception should not occur here.", exceptionThrown);
}
}
// Test that we are getting an Illegal argument exception when trying to access non-persistent fields from transient classes
public void testAttribute_getAttribute_of_TransientNonEntityNonMappedSuperclass_SuperclassOfEntity_throws_IAE() {
EntityManager em = null;
boolean exceptionThrown = false;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
assertNotNull("The metamodel should never be null after an em.getMetamodel() call here.", metamodel);
// Verify that the non-Entity/non-MappedSuperclass is a BasicType
Type positionNonEntity = ((MetamodelImpl)metamodel).getType(Position.class);
assertNotNull(positionNonEntity);
assertEquals(Type.PersistenceType.BASIC, positionNonEntity.getPersistenceType());
// Get direct inheriting subclass
EntityTypeImpl<GalacticPosition> entityLocation_ = (EntityTypeImpl) metamodel.entity(GalacticPosition.class);
assertNotNull(entityLocation_);
// We will be testing that the non-persistent fields
Attribute anAttributeThatShouldNotHaveBeenInherited = entityLocation_.getAttribute("nonPersistentObject");
// we should never get to the following line - go directly to catch block
assertTrue("IllegalArgumentException expected on transient type attribute should not be in subclass for managedType.getAttribute()",exceptionThrown);
} catch (IllegalArgumentException iae) {
//iae.printStackTrace();
exceptionThrown = true;
assertTrue("IllegalArgumentException expected on transient type attribute should not be in subclass for managedType.getAttribute()",exceptionThrown);
} finally {
cleanup(em);
}
}
public void testMapAttribute_getDeclaredPluralAttributesForEmbeddable(){
boolean exceptionThrown = false;
EntityManager em = null;
try {
em = privateTestSetup();
assertNotNull(em);
Metamodel metamodel = em.getMetamodel();
EmbeddableTypeImpl<Observation> observation_ = (EmbeddableTypeImpl)metamodel.embeddable(Observation.class);
Set<PluralAttribute<Observation, ?, ?>> pluralAtrributes = observation_.getDeclaredPluralAttributes();
boolean foundDetails = false;
boolean foundLocations = false;
for (PluralAttribute<Observation, ?, ?> attribute: pluralAtrributes){
if (attribute.getName().equals("details")){
foundDetails = true;
} else if (attribute.getName().equals("locations")){
foundLocations = true;
}
}
assertTrue("Map ElementCollection Plural Attribute not found.", foundDetails);
assertTrue("Collection ElementCollection Plural Attribute not found.", foundLocations);
} finally {
cleanup(em);
}
}
/**
* Disclaimer:
* The following work may still need to be fully implemented - subject to available time.
* - proper and fully optimized test cases
* - full exception handling
* - full rollback handling
* - better documented assertion failures
* - fully described test model with links to design document
* - traceability back to use cases
*/
}