Skip to content

Commit d37c032

Browse files
committed
#18 - Add MemberDetails#getDeclaringType()
1 parent 78e7a45 commit d37c032

17 files changed

+127
-17
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,19 @@
1717
public class DynamicFieldDetails extends AbstractAnnotationTarget implements FieldDetails, MutableMemberDetails {
1818
private final String name;
1919
private final ClassDetails type;
20+
private final ClassDetails declaringType;
2021
private final int modifierFlags;
2122

2223
public DynamicFieldDetails(
2324
String name,
2425
ClassDetails type,
26+
ClassDetails declaringType,
2527
int modifierFlags,
2628
SourceModelBuildingContext buildingContext) {
2729
super( buildingContext );
2830
this.name = name;
2931
this.type = type;
32+
this.declaringType = declaringType;
3033
this.modifierFlags = modifierFlags;
3134
}
3235

@@ -40,6 +43,11 @@ public ClassDetails getType() {
4043
return type;
4144
}
4245

46+
@Override
47+
public ClassDetails getDeclaringType() {
48+
return declaringType;
49+
}
50+
4351
@Override
4452
public int getModifiers() {
4553
return modifierFlags;

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
public class DynamicMethodDetails extends AbstractAnnotationTarget implements MethodDetails, MutableMemberDetails {
2121
private final String name;
2222
private final ClassDetails type;
23+
private final ClassDetails declaringType;
2324
private final MethodKind methodKind;
2425
private final int modifierFlags;
2526

@@ -29,6 +30,7 @@ public class DynamicMethodDetails extends AbstractAnnotationTarget implements Me
2930
public DynamicMethodDetails(
3031
String name,
3132
ClassDetails type,
33+
ClassDetails declaringType,
3234
MethodKind methodKind,
3335
int modifierFlags,
3436
ClassDetails returnType,
@@ -37,6 +39,7 @@ public DynamicMethodDetails(
3739
super( buildingContext );
3840
this.name = name;
3941
this.type = type;
42+
this.declaringType = declaringType;
4043
this.methodKind = methodKind;
4144
this.modifierFlags = modifierFlags;
4245
this.returnType = returnType;
@@ -58,6 +61,11 @@ public ClassDetails getType() {
5861
return type;
5962
}
6063

64+
@Override
65+
public ClassDetails getDeclaringType() {
66+
return declaringType;
67+
}
68+
6169
@Override
6270
public int getModifiers() {
6371
return modifierFlags;

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,19 @@ public class MapModeFieldDetails extends AbstractAnnotationTarget implements Fie
2020
private final String name;
2121
private final ClassDetails type;
2222
private final int modifierFlags;
23+
private final ClassDetails declaringType;
2324

24-
public MapModeFieldDetails(String name, ClassDetails type, int modifierFlags, SourceModelBuildingContext buildingContext) {
25+
public MapModeFieldDetails(
26+
String name,
27+
ClassDetails type,
28+
int modifierFlags,
29+
ClassDetails declaringType,
30+
SourceModelBuildingContext buildingContext) {
2531
super( buildingContext );
2632
this.name = name;
2733
this.type = type;
2834
this.modifierFlags = modifierFlags;
35+
this.declaringType = declaringType;
2936
}
3037

3138
@Override
@@ -38,6 +45,11 @@ public ClassDetails getType() {
3845
return type;
3946
}
4047

48+
@Override
49+
public ClassDetails getDeclaringType() {
50+
return declaringType;
51+
}
52+
4153
@Override
4254
public int getModifiers() {
4355
return modifierFlags;

src/main/java/org/hibernate/models/internal/jandex/JandexBuilders.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ public static Class<?> resolvePrimitiveClass(String className) {
123123

124124
public static JandexMethodDetails buildMethodDetails(
125125
MethodInfo method,
126+
ClassDetails declaringType,
126127
SourceModelBuildingContext buildingContext) {
127-
128128
if ( method.parametersCount() == 0 ) {
129129
// could be a getter
130130
final Type returnType = method.returnType();
@@ -135,6 +135,7 @@ public static JandexMethodDetails buildMethodDetails(
135135
method,
136136
MethodDetails.MethodKind.GETTER,
137137
buildingContext.getClassDetailsRegistry().resolveClassDetails( returnType.name().toString() ),
138+
declaringType,
138139
buildingContext
139140
);
140141
}
@@ -145,6 +146,7 @@ else if ( isBoolean( returnType ) && ( methodName.startsWith( "is" )
145146
method,
146147
MethodDetails.MethodKind.GETTER,
147148
buildingContext.getClassDetailsRegistry().resolveClassDetails( returnType.name().toString() ),
149+
declaringType,
148150
buildingContext
149151
);
150152
}
@@ -158,6 +160,7 @@ else if ( isBoolean( returnType ) && ( methodName.startsWith( "is" )
158160
method,
159161
MethodDetails.MethodKind.SETTER,
160162
buildingContext.getClassDetailsRegistry().resolveClassDetails( method.parameterType( 0 ).name().toString() ),
163+
declaringType,
161164
buildingContext
162165
);
163166
}
@@ -166,6 +169,7 @@ else if ( isBoolean( returnType ) && ( methodName.startsWith( "is" )
166169
method,
167170
MethodDetails.MethodKind.OTHER,
168171
null,
172+
declaringType,
169173
buildingContext
170174
);
171175
}

src/main/java/org/hibernate/models/internal/jandex/JandexClassDetails.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ private List<FieldDetails> resolveFields() {
131131
final List<FieldInfo> fieldsInfoList = classInfo.fields();
132132
final List<FieldDetails> result = new ArrayList<>( fieldsInfoList.size() );
133133
for ( FieldInfo fieldInfo : fieldsInfoList ) {
134-
result.add( new JandexFieldDetails( fieldInfo, getBuildingContext() ) );
134+
result.add( new JandexFieldDetails( fieldInfo, this, getBuildingContext() ) );
135135
}
136136
return result;
137137
}
@@ -153,7 +153,7 @@ private List<RecordComponentDetails> resolveRecordComponents() {
153153
final List<RecordComponentInfo> componentInfoList = classInfo.recordComponents();
154154
final List<RecordComponentDetails> result = CollectionHelper.arrayList( componentInfoList.size() );
155155
for ( RecordComponentInfo componentInfo : componentInfoList ) {
156-
result.add( new JandexRecordComponentDetails( componentInfo, getBuildingContext() ) );
156+
result.add( new JandexRecordComponentDetails( componentInfo, this, getBuildingContext() ) );
157157
}
158158
return result;
159159
}
@@ -173,7 +173,7 @@ private List<MethodDetails> resolveMethods() {
173173
if ( methodInfo.isConstructor() || "<clinit>".equals( methodInfo.name() ) ) {
174174
continue;
175175
}
176-
result.add( JandexBuilders.buildMethodDetails( methodInfo, getBuildingContext() ) );
176+
result.add( JandexBuilders.buildMethodDetails( methodInfo, this, getBuildingContext() ) );
177177
}
178178
return result;
179179
}

src/main/java/org/hibernate/models/internal/jandex/JandexFieldDetails.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,21 @@
1414
import org.jboss.jandex.AnnotationTarget;
1515
import org.jboss.jandex.FieldInfo;
1616

17-
import static org.hibernate.models.internal.ModifierUtils.isPersistableField;
18-
1917
/**
2018
* @author Steve Ebersole
2119
*/
2220
public class JandexFieldDetails extends AbstractAnnotationTarget implements FieldDetails, MutableMemberDetails {
2321
private final FieldInfo fieldInfo;
2422
private final ClassDetails type;
23+
private final ClassDetails declaringType;
2524

2625
public JandexFieldDetails(
2726
FieldInfo fieldInfo,
27+
ClassDetails declaringType,
2828
SourceModelBuildingContext buildingContext) {
2929
super( buildingContext );
3030
this.fieldInfo = fieldInfo;
31+
this.declaringType = declaringType;
3132
this.type = buildingContext.getClassDetailsRegistry().resolveClassDetails( fieldInfo.type().name().toString() );
3233
}
3334

@@ -46,6 +47,11 @@ public ClassDetails getType() {
4647
return type;
4748
}
4849

50+
@Override
51+
public ClassDetails getDeclaringType() {
52+
return declaringType;
53+
}
54+
4955
@Override
5056
public int getModifiers() {
5157
return fieldInfo.flags();

src/main/java/org/hibernate/models/internal/jandex/JandexMethodDetails.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class JandexMethodDetails extends AbstractAnnotationTarget implements Met
2626
private final MethodInfo methodInfo;
2727
private final MethodKind methodKind;
2828
private final ClassDetails type;
29+
private final ClassDetails declaringType;
2930

3031
private final ClassDetails returnType;
3132
private final List<ClassDetails> argumentTypes;
@@ -34,11 +35,13 @@ public JandexMethodDetails(
3435
MethodInfo methodInfo,
3536
MethodKind methodKind,
3637
ClassDetails type,
38+
ClassDetails declaringType,
3739
SourceModelBuildingContext buildingContext) {
3840
super( buildingContext );
3941
this.methodInfo = methodInfo;
4042
this.methodKind = methodKind;
4143
this.type = type;
44+
this.declaringType = declaringType;
4245

4346
final ClassDetailsRegistry classDetailsRegistry = buildingContext.getClassDetailsRegistry();
4447
this.returnType = classDetailsRegistry.resolveClassDetails( methodInfo.returnType().name().toString() );
@@ -69,6 +72,11 @@ public ClassDetails getType() {
6972
return type;
7073
}
7174

75+
@Override
76+
public ClassDetails getDeclaringType() {
77+
return declaringType;
78+
}
79+
7280
@Override
7381
public int getModifiers() {
7482
return methodInfo.flags();

src/main/java/org/hibernate/models/internal/jandex/JandexRecordComponentDetails.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,15 @@
2020
public class JandexRecordComponentDetails extends AbstractAnnotationTarget implements RecordComponentDetails, MutableMemberDetails {
2121
private final RecordComponentInfo recordComponentInfo;
2222
private final ClassDetails type;
23+
private final ClassDetails declaringType;
2324

2425
public JandexRecordComponentDetails(
2526
RecordComponentInfo recordComponentInfo,
27+
ClassDetails declaringType,
2628
SourceModelBuildingContext buildingContext) {
2729
super( buildingContext );
2830
this.recordComponentInfo = recordComponentInfo;
31+
this.declaringType = declaringType;
2932
this.type = buildingContext.getClassDetailsRegistry().resolveClassDetails( recordComponentInfo.type().name().toString() );
3033
}
3134

@@ -44,6 +47,11 @@ public ClassDetails getType() {
4447
return type;
4548
}
4649

50+
@Override
51+
public ClassDetails getDeclaringType() {
52+
return declaringType;
53+
}
54+
4755
@Override
4856
public int getModifiers() {
4957
return recordComponentInfo.accessor().flags();

src/main/java/org/hibernate/models/internal/jdk/JdkBuilders.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,18 +138,21 @@ public static JdkClassDetails buildClassDetailsStatic(Class<?> javaClass, Source
138138
return new JdkClassDetails( javaClass, buildingContext );
139139
}
140140

141-
public static JdkMethodDetails buildMethodDetails(Method method, SourceModelBuildingContext buildingContext) {
141+
public static JdkMethodDetails buildMethodDetails(
142+
Method method,
143+
ClassDetails declaringType,
144+
SourceModelBuildingContext buildingContext) {
142145
if ( method.getParameterCount() == 0 ) {
143146
// could be a getter
144147
final Class<?> returnType = method.getReturnType();
145148
if ( !isVoid( returnType )
146149
&& !ModifierUtils.isStatic( method.getModifiers() ) ) {
147150
final String methodName = method.getName();
148151
if ( methodName.startsWith( "get" ) ) {
149-
return buildGetterDetails( method, returnType, buildingContext );
152+
return buildGetterDetails( method, returnType, declaringType, buildingContext );
150153
}
151154
else if ( isBoolean( returnType ) && methodName.startsWith( "is" ) ) {
152-
return buildGetterDetails( method, returnType, buildingContext );
155+
return buildGetterDetails( method, returnType, declaringType, buildingContext );
153156
}
154157
}
155158
}
@@ -158,34 +161,38 @@ else if ( isBoolean( returnType ) && methodName.startsWith( "is" ) ) {
158161
&& isVoid( method.getReturnType() )
159162
&& !ModifierUtils.isStatic( method.getModifiers() )
160163
&& method.getName().startsWith( "set" ) ) {
161-
return buildSetterDetails( method, method.getParameterTypes()[0], buildingContext );
164+
return buildSetterDetails( method, method.getParameterTypes()[0], declaringType, buildingContext );
162165
}
163166

164-
return new JdkMethodDetails( method, MethodDetails.MethodKind.OTHER, null, buildingContext );
167+
return new JdkMethodDetails( method, MethodDetails.MethodKind.OTHER, null, declaringType, buildingContext );
165168
}
166169

167170
public static JdkMethodDetails buildGetterDetails(
168171
Method method,
169172
Class<?> type,
173+
ClassDetails declaringType,
170174
SourceModelBuildingContext buildingContext) {
171175
assert type != null;
172176
return new JdkMethodDetails(
173177
method,
174178
MethodDetails.MethodKind.GETTER,
175179
buildingContext.getClassDetailsRegistry().resolveClassDetails( type.getName() ),
180+
declaringType,
176181
buildingContext
177182
);
178183
}
179184

180185
public static JdkMethodDetails buildSetterDetails(
181186
Method method,
182187
Class<?> type,
188+
ClassDetails declaringType,
183189
SourceModelBuildingContext buildingContext) {
184190
assert type != null;
185191
return new JdkMethodDetails(
186192
method,
187193
MethodDetails.MethodKind.SETTER,
188194
buildingContext.getClassDetailsRegistry().resolveClassDetails( type.getName() ),
195+
declaringType,
189196
buildingContext
190197
);
191198
}

src/main/java/org/hibernate/models/internal/jdk/JdkClassDetails.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ public List<FieldDetails> getFields() {
145145
this.fields = CollectionHelper.arrayList( reflectionFields.length );
146146
for ( int i = 0; i < reflectionFields.length; i++ ) {
147147
final Field reflectionField = reflectionFields[i];
148-
fields.add( new JdkFieldDetails( reflectionField, getBuildingContext() ) );
148+
fields.add( new JdkFieldDetails( reflectionField, this, getBuildingContext() ) );
149149
}
150150
}
151151
return fields;
@@ -162,7 +162,7 @@ public List<MethodDetails> getMethods() {
162162
final Method[] reflectionMethods = managedClass.getDeclaredMethods();
163163
this.methods = CollectionHelper.arrayList( reflectionMethods.length );
164164
for ( int i = 0; i < reflectionMethods.length; i++ ) {
165-
this.methods.add( buildMethodDetails( reflectionMethods[i], getBuildingContext() ) );
165+
this.methods.add( buildMethodDetails( reflectionMethods[i], this, getBuildingContext() ) );
166166
}
167167
}
168168
return methods;
@@ -182,7 +182,7 @@ public List<RecordComponentDetails> getRecordComponents() {
182182
final RecordComponent[] jdkRecordComponents = managedClass.getRecordComponents();
183183
recordComponents = CollectionHelper.arrayList( jdkRecordComponents.length );
184184
for ( int i = 0; i < jdkRecordComponents.length; i++ ) {
185-
recordComponents.add( new JdkRecordComponentDetails( jdkRecordComponents[i], getBuildingContext() ) );
185+
recordComponents.add( new JdkRecordComponentDetails( jdkRecordComponents[i], this, getBuildingContext() ) );
186186
}
187187
}
188188
return recordComponents;

0 commit comments

Comments
 (0)