/* * Hibernate, Relational Persistence for Idiomatic Java * * Copyright (c) 2006-2011, Red Hat Inc. or third-party contributors as * indicated by the @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.test.legacy; import java.util.Iterator; import java.util.Map; import org.hibernate.cfg.Configuration; import org.hibernate.mapping.Bag; import org.hibernate.mapping.Collection; import org.hibernate.mapping.Component; import org.hibernate.mapping.MetaAttribute; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Property; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.junit4.BaseUnitTestCase; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; public class NonReflectiveBinderTest extends BaseUnitTestCase { private Configuration cfg; public String[] getMappings() { return new String[] { "legacy/Wicked.hbm.xml"}; } @Before public void setUp() throws Exception { cfg = new Configuration() .addResource( "org/hibernate/test/legacy/Wicked.hbm.xml" ) .setProperty( "javax.persistence.validation.mode", "none" ); cfg.buildMappings(); } @After public void tearDown() throws Exception { cfg = null; } @Test public void testMetaInheritance() { PersistentClass cm = cfg.getClassMapping("org.hibernate.test.legacy.Wicked"); Map m = cm.getMetaAttributes(); assertNotNull(m); assertNotNull(cm.getMetaAttribute("global")); assertNull(cm.getMetaAttribute("globalnoinherit")); MetaAttribute metaAttribute = cm.getMetaAttribute("implements"); assertNotNull(metaAttribute); assertEquals("implements", metaAttribute.getName()); assertTrue(metaAttribute.isMultiValued()); assertEquals(3, metaAttribute.getValues().size()); assertEquals("java.lang.Observer",metaAttribute.getValues().get(0)); assertEquals("java.lang.Observer",metaAttribute.getValues().get(1)); assertEquals("org.foo.BogusVisitor",metaAttribute.getValues().get(2)); /*Property property = cm.getIdentifierProperty(); property.getMetaAttribute(null);*/ Iterator propertyIterator = cm.getPropertyIterator(); while (propertyIterator.hasNext()) { Property element = (Property) propertyIterator.next(); System.out.println(element); Map ma = element.getMetaAttributes(); assertNotNull(ma); assertNotNull(element.getMetaAttribute("global")); MetaAttribute metaAttribute2 = element.getMetaAttribute("implements"); assertNotNull(metaAttribute2); assertNull(element.getMetaAttribute("globalnoinherit")); } Property element = cm.getProperty("component"); Map ma = element.getMetaAttributes(); assertNotNull(ma); assertNotNull(element.getMetaAttribute("global")); assertNotNull(element.getMetaAttribute("componentonly")); assertNotNull(element.getMetaAttribute("allcomponent")); assertNull(element.getMetaAttribute("globalnoinherit")); MetaAttribute compimplements = element.getMetaAttribute("implements"); assertNotNull(compimplements); assertEquals(compimplements.getValue(), "AnotherInterface"); Property xp = ((Component)element.getValue()).getProperty( "x" ); MetaAttribute propximplements = xp.getMetaAttribute( "implements" ); assertNotNull(propximplements); assertEquals(propximplements.getValue(), "AnotherInterface"); } @Test @TestForIssue( jiraKey = "HBX-718" ) public void testNonMutatedInheritance() { PersistentClass cm = cfg.getClassMapping("org.hibernate.test.legacy.Wicked"); MetaAttribute metaAttribute = cm.getMetaAttribute( "globalmutated" ); assertNotNull(metaAttribute); /*assertEquals( metaAttribute.getValues().size(), 2 ); assertEquals( "top level", metaAttribute.getValues().get(0) );*/ assertEquals( "wicked level", metaAttribute.getValue() ); Property property = cm.getProperty( "component" ); MetaAttribute propertyAttribute = property.getMetaAttribute( "globalmutated" ); assertNotNull(propertyAttribute); /*assertEquals( propertyAttribute.getValues().size(), 3 ); assertEquals( "top level", propertyAttribute.getValues().get(0) ); assertEquals( "wicked level", propertyAttribute.getValues().get(1) );*/ assertEquals( "monetaryamount level", propertyAttribute.getValue() ); org.hibernate.mapping.Component component = (Component)property.getValue(); property = component.getProperty( "x" ); propertyAttribute = property.getMetaAttribute( "globalmutated" ); assertNotNull(propertyAttribute); /*assertEquals( propertyAttribute.getValues().size(), 4 ); assertEquals( "top level", propertyAttribute.getValues().get(0) ); assertEquals( "wicked level", propertyAttribute.getValues().get(1) ); assertEquals( "monetaryamount level", propertyAttribute.getValues().get(2) );*/ assertEquals( "monetaryamount x level", propertyAttribute.getValue() ); property = cm.getProperty( "sortedEmployee" ); propertyAttribute = property.getMetaAttribute( "globalmutated" ); assertNotNull(propertyAttribute); /*assertEquals( propertyAttribute.getValues().size(), 3 ); assertEquals( "top level", propertyAttribute.getValues().get(0) ); assertEquals( "wicked level", propertyAttribute.getValues().get(1) );*/ assertEquals( "sortedemployee level", propertyAttribute.getValue() ); property = cm.getProperty( "anotherSet" ); propertyAttribute = property.getMetaAttribute( "globalmutated" ); assertNotNull(propertyAttribute); /*assertEquals( propertyAttribute.getValues().size(), 2 ); assertEquals( "top level", propertyAttribute.getValues().get(0) );*/ assertEquals( "wicked level", propertyAttribute.getValue() ); Bag bag = (Bag) property.getValue(); component = (Component)bag.getElement(); assertEquals(4,component.getMetaAttributes().size()); metaAttribute = component.getMetaAttribute( "globalmutated" ); /*assertEquals( metaAttribute.getValues().size(), 3 ); assertEquals( "top level", metaAttribute.getValues().get(0) ); assertEquals( "wicked level", metaAttribute.getValues().get(1) );*/ assertEquals( "monetaryamount anotherSet composite level", metaAttribute.getValue() ); property = component.getProperty( "emp" ); propertyAttribute = property.getMetaAttribute( "globalmutated" ); assertNotNull(propertyAttribute); /*assertEquals( propertyAttribute.getValues().size(), 4 ); assertEquals( "top level", propertyAttribute.getValues().get(0) ); assertEquals( "wicked level", propertyAttribute.getValues().get(1) ); assertEquals( "monetaryamount anotherSet composite level", propertyAttribute.getValues().get(2) );*/ assertEquals( "monetaryamount anotherSet composite property emp level", propertyAttribute.getValue() ); property = component.getProperty( "empinone" ); propertyAttribute = property.getMetaAttribute( "globalmutated" ); assertNotNull(propertyAttribute); /*assertEquals( propertyAttribute.getValues().size(), 4 ); assertEquals( "top level", propertyAttribute.getValues().get(0) ); assertEquals( "wicked level", propertyAttribute.getValues().get(1) ); assertEquals( "monetaryamount anotherSet composite level", propertyAttribute.getValues().get(2) );*/ assertEquals( "monetaryamount anotherSet composite property empinone level", propertyAttribute.getValue() ); } @Test public void testComparator() { PersistentClass cm = cfg.getClassMapping("org.hibernate.test.legacy.Wicked"); Property property = cm.getProperty("sortedEmployee"); Collection col = (Collection) property.getValue(); assertEquals(col.getComparatorClassName(),"org.hibernate.test.legacy.NonExistingComparator"); } }