-
-
Notifications
You must be signed in to change notification settings - Fork 9
Closed
Milestone
Description
We currently have methods to convert the various detail objects (ClassDetails
, FieldDetails
, ...) into java.lang.reflect
forms (Class
, Field
, ...). But those forms implicitly use the current application classloader (which may or may not be fine).
I think an improvement here would be to move to a paradigm that is more explicit about whether the "copy loading" hapens:
interface ClassDetails {
...
/**
* Current form
*/
<X> Class<X> toJavaClass();
/**
* New form
*/
<X> Class<X> toJavaClass(ClassLoading classLoading, SourceModelContext context);
}
interface MemberDetails {
...
/**
* Current form
*/
Member toJavaMember();
/**
* New form
*/
Member toJavaMember(Class declaringClass, SourceModelContext context);
}
interface FieldDetails extends MemberDetails {
...
@Override
Field toJavaMember(Class declaringClass, SourceModelContext context);
}
interface MethodDetails extends MemberDetails {
...
@Override
Method toJavaMember(Class declaringClass, SourceModelContext context);
}
...