Here's a workaround

public interface LegacyService {
                void method1();
}

public class LegacyServiceImpl implements LegacyService {
                public void method1() { ... }
                public void method2() { ... }
}

public interface ExtendedService {
                void method2();
}

public interface Hack {
                public LegacyService getLegacyService();
                public ExtendedService getExtendedService();
}

AppModule
---------
public Hack buildHack(@Autobuild LegacyServiceImpl impl) {
                return new Hack() {
                                public LegacyService getLegacyService() {
return impl; }

                                public ExtendedService getExtendedService()
{
                                                return new
ExtendedService()
{                                                               public void
method2()
{
return impl.method2();
                                                                }
                                                };
                                };
                };
}

public LegacyService buildLegacyService(Hack hack) {
                return hack.getLegacyService();
}

public ExtendedService buildExtendedService(Hack hack) {
                return hack.getExtendedService();
}



Component
---------
@Inject
private LegacyService legacyService;

@Inject
private ExtendedService extendedService;

Reply via email to