/* * Hibernate, Relational Persistence for Idiomatic Java * * Copyright (c) 2009 by Red Hat Inc and/or its affiliates or by * third-party contributors as indicated by either @author tags or express * copyright attribution statements applied by the authors. All * third-party contributions are distributed under license by Red Hat Inc. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA */ package org.hibernate.ejb.test.metadata; import javax.persistence.metamodel.Attribute; import javax.persistence.metamodel.Bindable; import javax.persistence.metamodel.EmbeddableType; import javax.persistence.metamodel.PluralAttribute; import javax.persistence.metamodel.Type; import java.util.Set; import org.hibernate.ejb.test.BaseEntityManagerFunctionalTestCase; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; /** * @author Steve Ebersole */ public class StaticMetadataTest extends BaseEntityManagerFunctionalTestCase { @Test public void testInjections() throws Exception { // Address (embeddable) assertNotNull( Address_.address1 ); assertNotNull( Address_.address2 ); assertNotNull( Address_.city ); final EmbeddableType<Address> addressType = ( EmbeddableType<Address> ) House_.address.getType(); assertEquals( addressType.getDeclaredSingularAttribute( "address1" ), Address_.address1 ); assertEquals( addressType.getDeclaredSingularAttribute( "address2" ), Address_.address2 ); assertTrue( Address_.address1.isOptional() ); assertFalse( Address_.address2.isOptional() ); // Animal (mapped superclass) assertNotNull( Animal_.id ); assertTrue( Animal_.id.isId() ); assertEquals( Long.class, Animal_.id.getJavaType() ); assertNotNull( Animal_.legNbr ); // assertEquals( Integer.class, Animal_.legNbr.getJavaType() ); assertEquals( int.class, Animal_.legNbr.getJavaType() ); // Cat (hierarchy) assertNotNull( Cat_.id ); assertNotNull( Cat_.id.isId() ); assertEquals( Animal.class, Cat_.id.getJavaMember().getDeclaringClass() ); assertNotNull( Cat_.nickname ); // FoodItem assertNotNull( FoodItem_.version ); assertTrue( FoodItem_.version.isVersion() ); // Fridge assertNotNull( Fridge_.id ); assertTrue( Fridge_.id.isId() ); assertEquals( Long.class, Fridge_.id.getJavaType() ); assertNotNull( Fridge_.temperature ); assertEquals( "temperature", Fridge_.temperature.getName() ); assertEquals( Fridge.class, Fridge_.temperature.getDeclaringType().getJavaType() ); // assertEquals( Integer.class, Fridge_.temperature.getJavaType() ); // assertEquals( Integer.class, Fridge_.temperature.getBindableJavaType() ); // assertEquals( Integer.class, Fridge_.temperature.getType().getJavaType() ); assertEquals( int.class, Fridge_.temperature.getJavaType() ); assertEquals( int.class, Fridge_.temperature.getBindableJavaType() ); assertEquals( int.class, Fridge_.temperature.getType().getJavaType() ); assertEquals( Bindable.BindableType.SINGULAR_ATTRIBUTE, Fridge_.temperature.getBindableType() ); assertEquals( Type.PersistenceType.BASIC, Fridge_.temperature.getType().getPersistenceType() ); assertEquals( Attribute.PersistentAttributeType.BASIC, Fridge_.temperature.getPersistentAttributeType() ); assertFalse( Fridge_.temperature.isId() ); assertFalse( Fridge_.temperature.isOptional() ); assertFalse( Fridge_.temperature.isAssociation() ); assertFalse( Fridge_.temperature.isCollection() ); assertFalse( Fridge_.brand.isOptional() ); // House (embedded id) assertNotNull( House_.key ); assertTrue( House_.key.isId() ); assertEquals( Attribute.PersistentAttributeType.EMBEDDED, House_.key.getPersistentAttributeType() ); assertNotNull( House_.address ); assertEquals( Attribute.PersistentAttributeType.EMBEDDED, House_.address.getPersistentAttributeType() ); assertFalse( House_.address.isCollection() ); assertFalse( House_.address.isAssociation() ); assertNotNull( House_.rooms ); assertTrue( House_.rooms.isAssociation() ); assertTrue( House_.rooms.isCollection() ); assertEquals( Attribute.PersistentAttributeType.ELEMENT_COLLECTION, House_.rooms.getPersistentAttributeType() ); assertEquals( Room.class, House_.rooms.getBindableJavaType() ); assertEquals( Bindable.BindableType.PLURAL_ATTRIBUTE, House_.rooms.getBindableType() ); assertEquals( Set.class, House_.rooms.getJavaType() ); assertEquals( PluralAttribute.CollectionType.SET, House_.rooms.getCollectionType() ); assertEquals( Type.PersistenceType.EMBEDDABLE, House_.rooms.getElementType().getPersistenceType() ); assertNotNull( House_.roomsByName ); assertEquals( String.class, House_.roomsByName.getKeyJavaType() ); assertEquals( Type.PersistenceType.BASIC, House_.roomsByName.getKeyType().getPersistenceType() ); assertEquals( PluralAttribute.CollectionType.MAP, House_.roomsByName.getCollectionType() ); assertNotNull( House_.roomsBySize ); assertEquals( Type.PersistenceType.EMBEDDABLE, House_.roomsBySize.getElementType().getPersistenceType() ); assertEquals( PluralAttribute.CollectionType.LIST, House_.roomsBySize.getCollectionType() ); // Person (mapped id) assertNotNull( Person_.firstName ); assertNotNull( Person_.lastName ); assertTrue( Person_.firstName.isId() ); assertTrue( Person_.lastName.isId() ); assertTrue( Person_.lastName.isId() ); //Garden List as bag assertNotNull( Garden_.flowers ); } @Override public Class[] getAnnotatedClasses() { return new Class[] { Fridge.class, FoodItem.class, Person.class, House.class, Dog.class, Cat.class, Cattish.class, Feline.class, Garden.class, Flower.class }; } }