@@ -36,12 +36,16 @@ private static boolean enableDynamicCodeGeneration(){
3636
3737 protected List <TemplateBuilder > templateBuilders ;
3838
39- public TemplateBuilderChain (TemplateRegistry registry ) {
39+ public TemplateBuilderChain (final TemplateRegistry registry ) {
40+ this (registry , null );
41+ }
42+
43+ public TemplateBuilderChain (final TemplateRegistry registry , final ClassLoader cl ) {
4044 templateBuilders = new ArrayList <TemplateBuilder >();
41- init (registry );
45+ reset (registry , cl );
4246 }
4347
44- private void init ( TemplateRegistry registry ) {
48+ private void reset ( final TemplateRegistry registry , final ClassLoader cl ) {
4549 if (registry == null ) {
4650 throw new NullPointerException ("registry is null" );
4751 }
@@ -51,6 +55,9 @@ private void init(TemplateRegistry registry) {
5155 templateBuilders .add (new OrdinalEnumTemplateBuilder (registry ));
5256 if (enableDynamicCodeGeneration ()) { // use dynamic code generation
5357 builder = new JavassistTemplateBuilder (registry );
58+ if (cl != null ) {
59+ ((JavassistTemplateBuilder ) builder ).addClassLoader (cl );
60+ }
5461 templateBuilders .add (builder );
5562 templateBuilders .add (new JavassistBeansTemplateBuilder (registry ));
5663 } else { // use reflection
@@ -61,7 +68,7 @@ private void init(TemplateRegistry registry) {
6168 }
6269 }
6370
64- public TemplateBuilder select (Type targetType , boolean hasAnnotation ) {
71+ public TemplateBuilder select (final Type targetType , final boolean hasAnnotation ) {
6572 for (TemplateBuilder tb : templateBuilders ) {
6673 if (tb .matchType (targetType , hasAnnotation )) {
6774 return tb ;
0 commit comments