Skip to content

Commit 7c7c51b

Browse files
committed
#107 - hibernate-models-bytebuddy
1 parent 31f1b28 commit 7c7c51b

File tree

4 files changed

+75
-42
lines changed

4 files changed

+75
-42
lines changed

hibernate-models-bytebuddy/src/main/java/org/hibernate/models/bytebuddy/internal/ClassDetailsImpl.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
import org.hibernate.models.internal.util.CollectionHelper;
1414
import org.hibernate.models.serial.spi.SerialClassDetails;
1515
import org.hibernate.models.spi.ClassDetails;
16+
import org.hibernate.models.spi.ClassLoading;
1617
import org.hibernate.models.spi.FieldDetails;
1718
import org.hibernate.models.spi.MethodDetails;
1819
import org.hibernate.models.spi.RecordComponentDetails;
1920
import org.hibernate.models.spi.SourceModelBuildingContext;
21+
import org.hibernate.models.spi.SourceModelContext;
2022
import org.hibernate.models.spi.TypeDetails;
2123
import org.hibernate.models.spi.TypeVariableDetails;
2224

@@ -31,7 +33,6 @@
3133
import net.bytebuddy.description.type.TypeList;
3234

3335
import static java.util.Collections.emptyList;
34-
import static org.hibernate.models.internal.SimpleClassLoading.SIMPLE_CLASS_LOADING;
3536
import static org.hibernate.models.internal.util.CollectionHelper.arrayList;
3637
import static org.hibernate.models.internal.util.CollectionHelper.isEmpty;
3738

@@ -197,7 +198,12 @@ private List<RecordComponentDetails> resolveRecordComponents() {
197198

198199
@Override
199200
public <X> Class<X> toJavaClass() {
200-
return SIMPLE_CLASS_LOADING.classForName( getClassName() );
201+
return toJavaClass( getModelContext().getClassLoading(), getModelContext() );
202+
}
203+
204+
@Override
205+
public <X> Class<X> toJavaClass(ClassLoading classLoading, SourceModelContext modelContext) {
206+
return classLoading.classForName( getClassName() );
201207
}
202208

203209
@Override

hibernate-models-bytebuddy/src/main/java/org/hibernate/models/bytebuddy/internal/FieldDetailsImpl.java

+14-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import java.lang.annotation.Annotation;
88
import java.lang.reflect.Field;
9-
import java.lang.reflect.Member;
109
import java.util.Collection;
1110
import java.util.Map;
1211

@@ -15,11 +14,13 @@
1514
import org.hibernate.models.internal.AnnotationTargetSupport;
1615
import org.hibernate.models.spi.AnnotationDescriptor;
1716
import org.hibernate.models.spi.ClassDetails;
17+
import org.hibernate.models.spi.ClassLoading;
1818
import org.hibernate.models.spi.FieldDetails;
1919
import org.hibernate.models.spi.MethodDetails;
2020
import org.hibernate.models.spi.MutableClassDetails;
2121
import org.hibernate.models.spi.MutableMemberDetails;
2222
import org.hibernate.models.spi.RecordComponentDetails;
23+
import org.hibernate.models.spi.SourceModelContext;
2324
import org.hibernate.models.spi.TypeDetails;
2425

2526
import net.bytebuddy.description.annotation.AnnotationSource;
@@ -88,18 +89,25 @@ public int getModifiers() {
8889
}
8990

9091

91-
private Member underlyingMember;
92+
private Field underlyingMember;
9293

9394
@Override
94-
public Member toJavaMember() {
95+
public Field toJavaMember() {
9596
if ( underlyingMember == null ) {
96-
underlyingMember = resolveJavaMember();
97+
underlyingMember = toJavaMember(
98+
declaringClassDetails.toJavaClass(),
99+
getModelContext().getClassLoading(),
100+
getModelContext()
101+
);
97102
}
98103
return underlyingMember;
99104
}
100105

101-
private Field resolveJavaMember() {
102-
final Class<?> declaringJavaClass = declaringClassDetails.toJavaClass();
106+
@Override
107+
public Field toJavaMember(
108+
Class<?> declaringJavaClass,
109+
ClassLoading classLoading,
110+
SourceModelContext modelContext) {
103111
try {
104112
return declaringJavaClass.getField( getName() );
105113
}

hibernate-models-bytebuddy/src/main/java/org/hibernate/models/bytebuddy/internal/MethodDetailsImpl.java

+45-34
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616
import org.hibernate.models.spi.AnnotationDescriptor;
1717
import org.hibernate.models.spi.ClassDetails;
1818
import org.hibernate.models.spi.ClassDetailsRegistry;
19+
import org.hibernate.models.spi.ClassLoading;
1920
import org.hibernate.models.spi.FieldDetails;
2021
import org.hibernate.models.spi.MethodDetails;
2122
import org.hibernate.models.spi.MutableClassDetails;
2223
import org.hibernate.models.spi.MutableMemberDetails;
2324
import org.hibernate.models.spi.RecordComponentDetails;
25+
import org.hibernate.models.spi.SourceModelContext;
2426
import org.hibernate.models.spi.TypeDetails;
2527

2628
import net.bytebuddy.description.annotation.AnnotationSource;
@@ -31,7 +33,9 @@
3133
/**
3234
* @author Steve Ebersole
3335
*/
34-
public class MethodDetailsImpl extends AbstractAnnotationTarget implements MethodDetails, MutableMemberDetails {
36+
public class MethodDetailsImpl
37+
extends AbstractAnnotationTarget
38+
implements MethodDetails, MutableMemberDetails {
3539
private final MethodDescription methodDescription;
3640
private final MethodKind methodKind;
3741
private final TypeDetails type;
@@ -137,44 +141,21 @@ public int getModifiers() {
137141
@Override
138142
public Method toJavaMember() {
139143
if ( underlyingMethod == null ) {
140-
underlyingMethod = resolveJavaMember();
144+
underlyingMethod = toJavaMember(
145+
declaringType.toJavaClass(),
146+
getModelContext().getClassLoading(),
147+
getModelContext()
148+
);
141149
}
142150
return underlyingMethod;
143151
}
144152

145153
@Override
146-
public MethodDetails asMethodDetails() {
147-
return this;
148-
}
149-
150-
@Override
151-
public MutableMemberDetails asMemberDetails() {
152-
return this;
153-
}
154-
155-
@Override
156-
public FieldDetails asFieldDetails() {
157-
throw new IllegalCastException( "MethodDetails cannot be cast as FieldDetails" );
158-
}
159-
160-
@Override
161-
public RecordComponentDetails asRecordComponentDetails() {
162-
throw new IllegalCastException( "MethodDetails cannot be cast as FieldDetails" );
163-
}
164-
165-
@Override
166-
public MutableClassDetails asClassDetails() {
167-
throw new IllegalCastException( "MethodDetails cannot be cast as FieldDetails" );
168-
}
169-
170-
@Override
171-
public <A extends Annotation> AnnotationDescriptor<A> asAnnotationDescriptor() {
172-
throw new IllegalCastException( "MethodDetails cannot be cast as AnnotationDescriptor" );
173-
}
174-
175-
private Method resolveJavaMember() {
176-
final Class<?> declaringTypeClass = declaringType.toJavaClass();
177-
methods: for ( Method method : declaringTypeClass.getDeclaredMethods() ) {
154+
public Method toJavaMember(
155+
Class<?> declaringJavaClass,
156+
ClassLoading classLoading,
157+
SourceModelContext modelContext) {
158+
methods: for ( Method method : declaringJavaClass.getDeclaredMethods() ) {
178159
if ( !method.getName().equals( getName() ) ) {
179160
continue;
180161
}
@@ -204,6 +185,36 @@ private Method resolveJavaMember() {
204185
);
205186
}
206187

188+
@Override
189+
public MethodDetails asMethodDetails() {
190+
return this;
191+
}
192+
193+
@Override
194+
public MutableMemberDetails asMemberDetails() {
195+
return this;
196+
}
197+
198+
@Override
199+
public FieldDetails asFieldDetails() {
200+
throw new IllegalCastException( "MethodDetails cannot be cast as FieldDetails" );
201+
}
202+
203+
@Override
204+
public RecordComponentDetails asRecordComponentDetails() {
205+
throw new IllegalCastException( "MethodDetails cannot be cast as FieldDetails" );
206+
}
207+
208+
@Override
209+
public MutableClassDetails asClassDetails() {
210+
throw new IllegalCastException( "MethodDetails cannot be cast as FieldDetails" );
211+
}
212+
213+
@Override
214+
public <A extends Annotation> AnnotationDescriptor<A> asAnnotationDescriptor() {
215+
throw new IllegalCastException( "MethodDetails cannot be cast as AnnotationDescriptor" );
216+
}
217+
207218
@Override
208219
public String toString() {
209220
return String.format(

hibernate-models-bytebuddy/src/main/java/org/hibernate/models/bytebuddy/internal/RecordComponentDetailsImpl.java

+8
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@
1414
import org.hibernate.models.bytebuddy.spi.ByteBuddyModelsContext;
1515
import org.hibernate.models.spi.AnnotationDescriptor;
1616
import org.hibernate.models.spi.ClassDetails;
17+
import org.hibernate.models.spi.ClassLoading;
1718
import org.hibernate.models.spi.FieldDetails;
1819
import org.hibernate.models.spi.MethodDetails;
1920
import org.hibernate.models.spi.MutableClassDetails;
2021
import org.hibernate.models.spi.MutableMemberDetails;
2122
import org.hibernate.models.spi.RecordComponentDetails;
23+
import org.hibernate.models.spi.SourceModelContext;
2224
import org.hibernate.models.spi.TypeDetails;
2325

2426
import net.bytebuddy.description.annotation.AnnotationSource;
@@ -97,6 +99,12 @@ public Member toJavaMember() {
9799
return underlyingMember;
98100
}
99101

102+
@Override
103+
public Member toJavaMember(Class<?> declaringClass, ClassLoading classLoading, SourceModelContext modelContext) {
104+
// we could maybe resolve the corresponding method...
105+
return null;
106+
}
107+
100108
private Field resolveJavaMember() {
101109
final Class<?> declaringJavaClass = declaringClassDetails.toJavaClass();
102110
try {

0 commit comments

Comments
 (0)