/*
* 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.bytecode.enhance.spi;
import javax.persistence.ElementCollection;
import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.ManyToMany;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToMany;
import javax.persistence.Transient;
default implementation of EnhancementContext. May be sub-classed as needed.
Author: Luis Barreiro
/**
* default implementation of EnhancementContext. May be sub-classed as needed.
*
* @author <a href="mailto:lbarreiro@redhat.com">Luis Barreiro</a>
*/
public class DefaultEnhancementContext implements EnhancementContext {
Returns: the classloader for this class
/**
* @return the classloader for this class
*/
@Override
public ClassLoader getLoadingClassLoader() {
return getClass().getClassLoader();
}
look for @Entity annotation
/**
* look for @Entity annotation
*/
@Override
public boolean isEntityClass(UnloadedClass classDescriptor) {
return classDescriptor.hasAnnotation( Entity.class );
}
look for @Embeddable annotation
/**
* look for @Embeddable annotation
*/
@Override
public boolean isCompositeClass(UnloadedClass classDescriptor) {
return classDescriptor.hasAnnotation( Embeddable.class );
}
look for @MappedSuperclass annotation
/**
* look for @MappedSuperclass annotation
*/
@Override
public boolean isMappedSuperclassClass(UnloadedClass classDescriptor) {
return classDescriptor.hasAnnotation( MappedSuperclass.class );
}
Returns: true
/**
* @return true
*/
@Override
public boolean doBiDirectionalAssociationManagement(UnloadedField field) {
return true;
}
Returns: true
/**
* @return true
*/
@Override
public boolean doDirtyCheckingInline(UnloadedClass classDescriptor) {
return true;
}
Returns: false
/**
* @return false
*/
@Override
public boolean doExtendedEnhancement(UnloadedClass classDescriptor) {
return false;
}
Returns: true
/**
* @return true
*/
@Override
public boolean hasLazyLoadableAttributes(UnloadedClass classDescriptor) {
return true;
}
Returns: true
/**
* @return true
*/
@Override
public boolean isLazyLoadable(UnloadedField field) {
return true;
}
look for @Transient annotation
/**
* look for @Transient annotation
*/
@Override
public boolean isPersistentField(UnloadedField ctField) {
return ! ctField.hasAnnotation( Transient.class );
}
look for @OneToMany, @ManyToMany and @ElementCollection annotations
/**
* look for @OneToMany, @ManyToMany and @ElementCollection annotations
*/
@Override
public boolean isMappedCollection(UnloadedField field) {
return field.hasAnnotation( OneToMany.class ) || field.hasAnnotation( ManyToMany.class ) || field.hasAnnotation( ElementCollection.class );
}
keep the same order.
/**
* keep the same order.
*/
@Override
public UnloadedField[] order(UnloadedField[] persistentFields) {
return persistentFields;
}
}