HHH-6173 Passing association and attribute overrides to EmbeddedClass
This commit is contained in:
parent
fcbca08a1f
commit
08ed4c1e80
|
@ -81,6 +81,16 @@ public class ConfiguredClass {
|
|||
*/
|
||||
private final ConfiguredClassType configuredClassType;
|
||||
|
||||
/**
|
||||
* The attribute overrides defined on this entity
|
||||
*/
|
||||
private final List<AnnotationInstance> attributeOverrides;
|
||||
|
||||
/**
|
||||
* The association overrides defined on this entity;
|
||||
*/
|
||||
private final List<AnnotationInstance> associationOverrides;
|
||||
|
||||
/**
|
||||
* The mapped attributes for entity
|
||||
*/
|
||||
|
@ -106,6 +116,9 @@ public class ConfiguredClass {
|
|||
this.configuredClassType = determineType();
|
||||
this.classAccessType = determineClassAccessType( defaultAccessType );
|
||||
|
||||
this.attributeOverrides = findAttributeOverrides();
|
||||
this.associationOverrides = findAssociationOverrides();
|
||||
|
||||
// find transient field and method names
|
||||
findTransientFieldAndMethodNames();
|
||||
|
||||
|
@ -388,6 +401,8 @@ public class ConfiguredClass {
|
|||
embeddableClassInfo,
|
||||
classAccessType,
|
||||
context.resolveType( type.getName() ),
|
||||
attributeOverrides,
|
||||
associationOverrides,
|
||||
context
|
||||
);
|
||||
|
||||
|
@ -480,4 +495,50 @@ public class ConfiguredClass {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<AnnotationInstance> findAttributeOverrides() {
|
||||
List<AnnotationInstance> attributeOverrideList = new ArrayList<AnnotationInstance>();
|
||||
|
||||
AnnotationInstance attributeOverrideAnnotation = JandexHelper.getSingleAnnotation(
|
||||
classInfo,
|
||||
JPADotNames.ATTRIBUTE_OVERRIDE
|
||||
);
|
||||
if ( attributeOverrideAnnotation != null ) {
|
||||
attributeOverrideList.add( attributeOverrideAnnotation );
|
||||
}
|
||||
|
||||
AnnotationInstance attributeOverridesAnnotation = JandexHelper.getSingleAnnotation(
|
||||
classInfo,
|
||||
JPADotNames.ATTRIBUTE_OVERRIDES
|
||||
);
|
||||
if ( attributeOverrideAnnotation != null ) {
|
||||
AnnotationInstance[] attributeOverride = attributeOverridesAnnotation.value().asNestedArray();
|
||||
Collections.addAll( attributeOverrideList, attributeOverride );
|
||||
}
|
||||
|
||||
return attributeOverrideList;
|
||||
}
|
||||
|
||||
private List<AnnotationInstance> findAssociationOverrides() {
|
||||
List<AnnotationInstance> associationOverrideList = new ArrayList<AnnotationInstance>();
|
||||
|
||||
AnnotationInstance associationOverrideAnnotation = JandexHelper.getSingleAnnotation(
|
||||
classInfo,
|
||||
JPADotNames.ASSOCIATION_OVERRIDE
|
||||
);
|
||||
if ( associationOverrideAnnotation != null ) {
|
||||
associationOverrideList.add( associationOverrideAnnotation );
|
||||
}
|
||||
|
||||
AnnotationInstance associationOverridesAnnotation = JandexHelper.getSingleAnnotation(
|
||||
classInfo,
|
||||
JPADotNames.ASSOCIATION_OVERRIDES
|
||||
);
|
||||
if ( associationOverrideAnnotation != null ) {
|
||||
AnnotationInstance[] attributeOverride = associationOverridesAnnotation.value().asNestedArray();
|
||||
Collections.addAll( associationOverrideList, attributeOverride );
|
||||
}
|
||||
|
||||
return associationOverrideList;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,18 +23,23 @@
|
|||
*/
|
||||
package org.hibernate.metamodel.source.annotations.entity;
|
||||
|
||||
import java.util.List;
|
||||
import javax.persistence.AccessType;
|
||||
|
||||
import com.fasterxml.classmate.ResolvedTypeWithMembers;
|
||||
import org.jboss.jandex.AnnotationInstance;
|
||||
import org.jboss.jandex.ClassInfo;
|
||||
|
||||
/**
|
||||
* @author Hardy Ferentschik
|
||||
*/
|
||||
public class EmbeddedClass extends ConfiguredClass {
|
||||
// todo - need to take care of the attribute path (HF)
|
||||
public EmbeddedClass(ClassInfo classInfo,
|
||||
AccessType defaultAccessType,
|
||||
ResolvedTypeWithMembers resolvedType,
|
||||
List<AnnotationInstance> attributeOverrides,
|
||||
List<AnnotationInstance> associationOverrides,
|
||||
AnnotationBindingContext context) {
|
||||
super( classInfo, defaultAccessType, resolvedType, context );
|
||||
}
|
||||
|
|
|
@ -280,7 +280,7 @@ public class EntityBindingStateImpl implements EntityBindingState {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Class getCustomEntityPersisterClass() {
|
||||
public Class<EntityPersister> getCustomEntityPersisterClass() {
|
||||
return persisterClass;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue