@@ -65,11 +65,38 @@ void testNonDurableFunctionThrowsUserFriendlyError() throws Exception {
6565 assertTrue (exception .getMessage ().contains ("Unexpected payload provided to start the durable execution" ));
6666 }
6767
68+ @ Test
69+ void testIndirectDurableHandlerInheritance () {
70+ // Handler reaching DurableHandler through an intermediate class resolves
71+ // its input type via the explicit constructor.
72+ var handler = new ConcreteIndirectHandler ();
73+
74+ assertNotNull (handler );
75+
76+ var result = handler .handleRequest ("test-input" , null );
77+ assertEquals ("indirect: test-input" , result );
78+ }
79+
6880 // Test handler implementation
6981 private static class TestDurableHandler extends DurableHandler <String , String > {
7082 @ Override
7183 public String handleRequest (String input , DurableContext context ) {
7284 return "processed: " + input ;
7385 }
7486 }
87+
88+ // Intermediate handler that forwards an explicit input type
89+ private abstract static class AbstractIndirectHandler <O > extends DurableHandler <String , O > {
90+ protected AbstractIndirectHandler () {
91+ super (TypeToken .get (String .class ));
92+ }
93+ }
94+
95+ // Inherits DurableHandler indirectly
96+ private static class ConcreteIndirectHandler extends AbstractIndirectHandler <String > {
97+ @ Override
98+ public String handleRequest (String input , DurableContext context ) {
99+ return "indirect: " + input ;
100+ }
101+ }
75102}
0 commit comments