Skip to content

Commit 6701a09

Browse files
committed
#34 - Add MemberDetails#getAssociatedType
1 parent 823a50e commit 6701a09

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

src/main/java/org/hibernate/models/spi/MemberDetails.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ public interface MemberDetails extends AnnotationTarget {
3838
*/
3939
TypeDetails getType();
4040

41+
/**
42+
* For plural members, the {@linkplain #getElementType "element type"};
43+
* otherwise, the member's {@linkplain #getType() type}
44+
*/
45+
default TypeDetails getAssociatedType() {
46+
return isPlural() ? getElementType() : getType();
47+
}
48+
4149
/**
4250
* Get the plural element type for this member. If the member does not have a type or the
4351
* member is not plural, a {@code null} is returned.

src/test/java/org/hibernate/models/members/ArrayTests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,21 @@ private void verify(Index index) {
4141
final FieldDetails field = classDetails.findFieldByName( "intArray" );
4242
assertThat( field.isPersistable() ).isTrue();
4343
assertThat( field.getType().asArrayType().getArrayClassDetails().toJavaClass() ).isEqualTo( int[].class );
44+
assertThat( field.getAssociatedType().determineRawClass().toJavaClass() ).isEqualTo( int.class );
4445
}
4546

4647
{
4748
final FieldDetails field = classDetails.findFieldByName( "intArray2" );
4849
assertThat( field.isPersistable() ).isTrue();
4950
assertThat( field.getType().asArrayType().getArrayClassDetails().toJavaClass() ).isEqualTo( int[][].class );
51+
assertThat( field.getAssociatedType().determineRawClass().toJavaClass() ).isEqualTo( int[].class );
5052
}
5153

5254
{
5355
final FieldDetails field = classDetails.findFieldByName( "intArray3" );
5456
assertThat( field.isPersistable() ).isTrue();
5557
assertThat( field.getType().asArrayType().getArrayClassDetails().toJavaClass() ).isEqualTo( int[][][].class );
58+
assertThat( field.getAssociatedType().determineRawClass().toJavaClass() ).isEqualTo( int[][].class );
5659
}
5760

5861
{

src/test/java/org/hibernate/models/members/FieldDetailsTests.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,23 @@ void verify(Index index) {
5454
assertThat( propertyField.toJavaMember().getName() ).isEqualTo( "property" );
5555
assertThat( propertyField.resolveAttributeName() ).isEqualTo( "property" );
5656
assertThat( propertyField.getType().asClassType().getClassDetails().toJavaClass() ).isEqualTo( Integer.class );
57+
assertThat( propertyField.getAssociatedType().determineRawClass().toJavaClass() ).isEqualTo( Integer.class );
5758
assertThat( propertyField.getVisibility() ).isEqualTo( MemberDetails.Visibility.PUBLIC );
5859
assertThat( propertyField.isPersistable() ).isTrue();
5960
assertThat( propertyField.getDeclaringType() ).isSameAs( classDetails );
6061

6162
final FieldDetails somethingField = classDetails.findFieldByName( "something" );
6263
assertThat( somethingField.resolveAttributeName() ).isEqualTo( "something" );
6364
assertThat( somethingField.getType().asClassType().getClassDetails().toJavaClass() ).isEqualTo( Object.class );
65+
assertThat( somethingField.getAssociatedType().determineRawClass().toJavaClass() ).isEqualTo( Object.class );
6466
assertThat( somethingField.getVisibility() ).isEqualTo( MemberDetails.Visibility.PUBLIC );
6567
assertThat( somethingField.isPersistable() ).isTrue();
6668
assertThat( somethingField.getDeclaringType() ).isSameAs( classDetails );
6769

6870
final FieldDetails activeField = classDetails.findFieldByName( "active" );
6971
assertThat( activeField.resolveAttributeName() ).isEqualTo( "active" );
7072
assertThat( activeField.getType().asPrimitiveType().getClassDetails().toJavaClass() ).isEqualTo( boolean.class );
73+
assertThat( activeField.getAssociatedType().determineRawClass().toJavaClass() ).isEqualTo( boolean.class );
7174
assertThat( activeField.getVisibility() ).isEqualTo( MemberDetails.Visibility.PRIVATE );
7275
assertThat( activeField.isPersistable() ).isTrue();
7376
assertThat( activeField.getDeclaringType() ).isSameAs( classDetails );
@@ -117,6 +120,7 @@ void verify(Index index) {
117120
final FieldDetails intValueArrayField = classDetails.findFieldByName( "intValueArray" );
118121
assertThat( intValueArrayField.resolveAttributeName() ).isEqualTo( "intValueArray" );
119122
assertThat( intValueArrayField.getType().asArrayType().getArrayClassDetails().toJavaClass() ).isEqualTo( int[].class );
123+
assertThat( intValueArrayField.getAssociatedType().determineRawClass().toJavaClass() ).isEqualTo( int.class );
120124
assertThat( intValueArrayField.getVisibility() ).isEqualTo( MemberDetails.Visibility.PROTECTED );
121125
assertThat( intValueArrayField.isPersistable() ).isTrue();
122126
assertThat( intValueArrayField.getDeclaringType() ).isSameAs( classDetails );

0 commit comments

Comments
 (0)