/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.bytecode.enhancement;
import org.hibernate.bytecode.enhance.spi.UnloadedClass;
import org.hibernate.bytecode.enhance.spi.UnloadedField;
import org.hibernate.test.bytecode.enhancement.merge.MergeEnhancedEntityTestTask;
import org.hibernate.test.bytecode.enhancement.merge.RefreshEnhancedEntityTestTask;
import org.hibernate.testing.DialectChecks;
import org.hibernate.testing.FailureExpected;
import org.hibernate.testing.RequiresDialectFeature;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.bytecode.enhancement.EnhancerTestContext;
import org.hibernate.testing.bytecode.enhancement.EnhancerTestUtils;
import org.hibernate.testing.junit4.BaseUnitTestCase;
import org.hibernate.test.bytecode.enhancement.access.MixedAccessTestTask;
import org.hibernate.test.bytecode.enhancement.association.InheritedAttributeAssociationTestTask;
import org.hibernate.test.bytecode.enhancement.association.ManyToManyAssociationTestTask;
import org.hibernate.test.bytecode.enhancement.association.OneToManyAssociationTestTask;
import org.hibernate.test.bytecode.enhancement.association.OneToManyBidirectionalAssociationTestTask;
import org.hibernate.test.bytecode.enhancement.association.OneToOneAssociationTestTask;
import org.hibernate.test.bytecode.enhancement.basic.BasicEnhancementTestTask;
import org.hibernate.test.bytecode.enhancement.basic.HHH9529TestTask;
import org.hibernate.test.bytecode.enhancement.cascade.CascadeDeleteTestTask;
import org.hibernate.test.bytecode.enhancement.cascade.CascadeWithFkConstraintTestTask;
import org.hibernate.test.bytecode.enhancement.detached.DetachedGetIdentifierTestTask;
import org.hibernate.test.bytecode.enhancement.dirty.DirtyTrackingCollectionTestTask;
import org.hibernate.test.bytecode.enhancement.dirty.DirtyTrackingTestTask;
import org.hibernate.test.bytecode.enhancement.eviction.EvictionTestTask;
import org.hibernate.test.bytecode.enhancement.extended.ExtendedAssociationManagementTestTasK;
import org.hibernate.test.bytecode.enhancement.extended.ExtendedEnhancementTestTask;
import org.hibernate.test.bytecode.enhancement.inherited.InheritedTestTask;
import org.hibernate.test.bytecode.enhancement.join.HHH3949TestTask1;
import org.hibernate.test.bytecode.enhancement.join.HHH3949TestTask2;
import org.hibernate.test.bytecode.enhancement.join.HHH3949TestTask3;
import org.hibernate.test.bytecode.enhancement.join.HHH3949TestTask4;
import org.hibernate.test.bytecode.enhancement.lazy.HHH_10708.UnexpectedDeleteOneTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.HHH_10708.UnexpectedDeleteThreeTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.HHH_10708.UnexpectedDeleteTwoTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.LazyBasicFieldNotInitializedTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.LazyCollectionDeletedTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.LazyCollectionLoadingTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.LazyCollectionNoTransactionLoadingTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.LazyLoadingIntegrationTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.LazyLoadingTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.LazyProxyOnEnhancedEntityTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.basic.LazyBasicFieldAccessTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.basic.LazyBasicPropertyAccessTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.cache.LazyInCacheTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.group.LazyGroupAccessTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.group.LazyGroupUpdateTestTask;
import org.hibernate.test.bytecode.enhancement.lazy.group.SimpleLazyGroupUpdateTestTask;
import org.hibernate.test.bytecode.enhancement.lazyCache.InitFromCacheTestTask;
import org.hibernate.test.bytecode.enhancement.mapped.MappedSuperclassTestTask;
import org.hibernate.test.bytecode.enhancement.merge.CompositeMergeTestTask;
import org.hibernate.test.bytecode.enhancement.ondemandload.LazyCollectionWithClearedSessionTestTask;
import org.hibernate.test.bytecode.enhancement.ondemandload.LazyCollectionWithClosedSessionTestTask;
import org.hibernate.test.bytecode.enhancement.ondemandload.LazyEntityLoadingWithClosedSessionTestTask;
import org.hibernate.test.bytecode.enhancement.otherentityentrycontext.OtherEntityEntryContextTestTask;
import org.hibernate.test.bytecode.enhancement.pk.EmbeddedPKTestTask;
import org.junit.Test;
/**
* @author Luis Barreiro
*/
public class EnhancerTest extends BaseUnitTestCase {
@Test
public void testBasic() {
EnhancerTestUtils.runEnhancerTestTask( BasicEnhancementTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-9529" )
public void testFieldHHH9529() {
EnhancerTestUtils.runEnhancerTestTask( HHH9529TestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-10851" )
public void testAccess() {
EnhancerTestUtils.runEnhancerTestTask( MixedAccessTestTask.class );
}
@Test
public void testDirty() {
EnhancerTestUtils.runEnhancerTestTask( DirtyTrackingTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-11426" )
public void testDetached() {
EnhancerTestUtils.runEnhancerTestTask( DetachedGetIdentifierTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-11459" )
public void testMergeRefresh() {
EnhancerTestUtils.runEnhancerTestTask( MergeEnhancedEntityTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( RefreshEnhancedEntityTestTask.class );
}
@Test
public void testEviction() {
EnhancerTestUtils.runEnhancerTestTask( EvictionTestTask.class );
}
@Test
public void testOtherPersistenceContext() {
EnhancerTestUtils.runEnhancerTestTask( OtherEntityEntryContextTestTask.class );
}
@Test
public void testAssociation() {
EnhancerTestUtils.runEnhancerTestTask( OneToOneAssociationTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( OneToManyAssociationTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( ManyToManyAssociationTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( InheritedAttributeAssociationTestTask.class );
}
@Test
@FailureExpected( jiraKey = "HHH-11196" )
public void testHHH11196() {
EnhancerTestUtils.runEnhancerTestTask( OneToManyBidirectionalAssociationTestTask.class );
}
@Test
public void testLazy() {
EnhancerTestUtils.runEnhancerTestTask( LazyLoadingTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( LazyLoadingIntegrationTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( LazyBasicPropertyAccessTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( LazyBasicFieldAccessTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-11576")
public void testLazyCollectionDeleted() {
EnhancerTestUtils.runEnhancerTestTask( LazyCollectionDeletedTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-10922" )
public void testLazyProxyOnEnhancedEntity() {
EnhancerTestUtils.runEnhancerTestTask( LazyProxyOnEnhancedEntityTestTask.class, new EnhancerTestContext() {
@Override
public boolean hasLazyLoadableAttributes(UnloadedClass classDescriptor) {
return false;
}
} );
}
@Test
@TestForIssue( jiraKey = "HHH-11173" )
@RequiresDialectFeature( DialectChecks.SupportsIdentityColumns.class)
public void testLazyCache() {
EnhancerTestUtils.runEnhancerTestTask( LazyInCacheTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-10252" )
public void testCascadeDelete() {
EnhancerTestUtils.runEnhancerTestTask( CascadeDeleteTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-10252" )
public void testCascadeFkDelete() {
EnhancerTestUtils.runEnhancerTestTask( CascadeWithFkConstraintTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-10055" )
public void testLazyCollectionHandling() {
EnhancerTestUtils.runEnhancerTestTask( LazyCollectionLoadingTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-10267" )
public void testLazyGroups() {
EnhancerTestUtils.runEnhancerTestTask( LazyGroupAccessTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-11155" )
public void testLazyGroupsUpdate() {
EnhancerTestUtils.runEnhancerTestTask( LazyGroupUpdateTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-11155" )
public void testLazyGroupsUpdateSimple() {
EnhancerTestUtils.runEnhancerTestTask( SimpleLazyGroupUpdateTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-11506" )
public void testLazyGroupsUpdateWithoutDirtyChecking() {
EnhancerTestUtils.runEnhancerTestTask( SimpleLazyGroupUpdateTestTask.class , new EnhancerTestContext() {
@Override
public boolean doDirtyCheckingInline(UnloadedClass classDescriptor) {
return false;
}
} );
}
@Test
public void testLazyCollectionNoTransactionHandling() {
EnhancerTestUtils.runEnhancerTestTask( LazyCollectionNoTransactionLoadingTestTask.class );
}
@Test(timeout = 10000)
@TestForIssue( jiraKey = "HHH-10055" )
@FailureExpected( jiraKey = "HHH-10055" )
public void testOnDemand() {
EnhancerTestUtils.runEnhancerTestTask( LazyCollectionWithClearedSessionTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( LazyCollectionWithClosedSessionTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( LazyEntityLoadingWithClosedSessionTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-10708" )
public void testLazyUnexpectedDelete() {
EnhancerTestUtils.runEnhancerTestTask( UnexpectedDeleteOneTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( UnexpectedDeleteTwoTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( UnexpectedDeleteThreeTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-10646" )
public void testMappedSuperclass() {
EnhancerTestUtils.runEnhancerTestTask( MappedSuperclassTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( MappedSuperclassTestTask.class, new EnhancerTestContext() {
@Override
public boolean hasLazyLoadableAttributes(UnloadedClass classDescriptor) {
// HHH-10981 - Without lazy loading, the generation of getters and setters has a different code path
return false;
}
} );
}
@Test
@TestForIssue( jiraKey = "HHH-11284" )
public void testInherited() {
EnhancerTestUtils.runEnhancerTestTask( InheritedTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( InheritedTestTask.class, new EnhancerTestContext() {
@Override
public boolean hasLazyLoadableAttributes(UnloadedClass classDescriptor) {
// HHH-10981 - Without lazy loading, the generation of getters and setters has a different code path
return false;
}
} );
}
@Test
public void testMerge() {
EnhancerTestUtils.runEnhancerTestTask( CompositeMergeTestTask.class );
}
@Test
public void testEmbeddedPK() {
EnhancerTestUtils.runEnhancerTestTask( EmbeddedPKTestTask.class );
}
@Test
public void testExtendedEnhancement() {
EnhancerTestUtils.runEnhancerTestTask( ExtendedEnhancementTestTask.class );
EnhancerTestUtils.runEnhancerTestTask( ExtendedAssociationManagementTestTasK.class );
}
@Test
@TestForIssue( jiraKey = "HHH-3949" )
@FailureExpected( jiraKey = "HHH-3949" )
public void testJoinFetchLazyToOneAttributeHql() {
EnhancerTestUtils.runEnhancerTestTask( HHH3949TestTask1.class );
}
@Test
@TestForIssue( jiraKey = "HHH-3949" )
@FailureExpected( jiraKey = "HHH-3949" )
public void testJoinFetchLazyToOneAttributeHql2() {
EnhancerTestUtils.runEnhancerTestTask( HHH3949TestTask2.class );
}
@Test
@TestForIssue( jiraKey = "HHH-3949" )
@FailureExpected( jiraKey = "HHH-3949" )
public void testHHH3949() {
EnhancerTestUtils.runEnhancerTestTask( HHH3949TestTask3.class );
EnhancerTestUtils.runEnhancerTestTask( HHH3949TestTask4.class );
}
@Test
@TestForIssue( jiraKey = "HHH-9937")
public void testLazyBasicFieldNotInitialized() {
EnhancerTestUtils.runEnhancerTestTask( LazyBasicFieldNotInitializedTestTask.class );
}
@Test
@TestForIssue( jiraKey = "HHH-11293")
public void testDirtyCollection() {
EnhancerTestUtils.runEnhancerTestTask( DirtyTrackingCollectionTestTask.class );
}
@Test
public void testInitFromCache() {
EnhancerTestUtils.runEnhancerTestTask( InitFromCacheTestTask.class );
}
}