@@ -90,6 +90,7 @@ protected void onGeneratedSource(JavaFileObject source) {
9090 }
9191 }
9292
93+ private final Object instance ;
9394 private final HookJoobyProcessor processor ;
9495
9596 public ProcessorRunner (Object instance ) throws IOException {
@@ -106,6 +107,7 @@ public ProcessorRunner(Object instance, Map<String, Object> options) throws IOEx
106107
107108 public ProcessorRunner (Object instance , Consumer <String > stdout , Map <String , Object > options )
108109 throws IOException {
110+ this .instance = instance ;
109111 this .processor = new HookJoobyProcessor (stdout ::accept );
110112 var optionsArray =
111113 options .entrySet ().stream ().map (e -> "-A" + e .getKey () + "=" + e .getValue ()).toList ();
@@ -126,8 +128,14 @@ public ProcessorRunner withRouter(SneakyThrows.Consumer2<Jooby, JavaFileObject>
126128 var classLoader = processor .createClassLoader ();
127129 var factoryName = classLoader .getClassName ();
128130 var factoryClass = (Class <? extends Extension >) classLoader .loadClass (factoryName );
129- var constructor = factoryClass .getDeclaredConstructor ();
130- var extension = constructor .newInstance ();
131+ Extension extension ;
132+ try {
133+ var constructor = factoryClass .getDeclaredConstructor ();
134+ extension = constructor .newInstance ();
135+ } catch (NoSuchMethodException x ) {
136+ extension = factoryClass .getDeclaredConstructor (instance .getClass ()).newInstance (instance );
137+ }
138+
131139 var application = new Jooby ();
132140 application .install (extension );
133141 consumer .accept (application , processor .getSource ());
0 commit comments