Skip to content

Commit 192d525

Browse files
authored
Merge pull request #47 from dreab8/classdetails_defaultvalue
Fix annotation ClassDetails default values extraction
2 parents 12a6fc2 + 5df2c12 commit 192d525

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

src/main/java/org/hibernate/models/internal/dynamic/DynamicAnnotationUsage.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,15 @@ private static Object wrapValue(Object value, AnnotationTarget target, SourceMod
157157
throw new AnnotationAccessException( "Error accessing default annotation attribute value", e );
158158
}
159159
}
160-
else if ( value != null && value.getClass().isArray() ) {
161-
return getList( value, target, context );
160+
else if ( value != null ) {
161+
if ( value.getClass().isArray() ) {
162+
return getList( value, target, context );
163+
}
164+
else if ( value.getClass() == Class.class ) {
165+
return context.getClassDetailsRegistry().findClassDetails( ( (Class) value ).getName() );
166+
}
162167
}
168+
163169
return value;
164170
}
165171

src/test/java/org/hibernate/models/dynamic/DynamicAnnotationTests.java

+16
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
import org.hibernate.models.internal.dynamic.DynamicAnnotationUsage;
1515
import org.hibernate.models.internal.dynamic.DynamicClassDetails;
1616
import org.hibernate.models.orm.JpaAnnotations;
17+
import org.hibernate.models.spi.ClassDetails;
1718

1819
import org.junit.jupiter.api.Test;
1920

2021
import jakarta.persistence.ConstraintMode;
22+
import jakarta.persistence.ElementCollection;
2123
import jakarta.persistence.GeneratedValue;
2224
import jakarta.persistence.GenerationType;
2325
import jakarta.persistence.JoinTable;
@@ -110,4 +112,18 @@ void testDefaultValues() {
110112
String generator = generatorAnn.findAttributeValue( "generator" );
111113
assertThat( generator ).isEqualTo( "" );
112114
}
115+
116+
@Test
117+
void testClassDetailsDefaultValue(){
118+
final SourceModelBuildingContextImpl buildingContext = createBuildingContext();
119+
final DynamicClassDetails dynamicEntity = new DynamicClassDetails( "DynamicEntity", buildingContext );
120+
final DynamicAnnotationUsage<ElementCollection> elementCollectionAnn = new DynamicAnnotationUsage<>(
121+
JpaAnnotations.ELEMENT_COLLECTION,
122+
dynamicEntity,
123+
buildingContext
124+
);
125+
126+
Object value = elementCollectionAnn.getAttributeValue( "targetClass" );
127+
assertThat( value ).isInstanceOf( ClassDetails.class );
128+
}
113129
}

0 commit comments

Comments
 (0)