Sorry to bring up an old thread, I'm just reading it now - to my entertainment and learning :)
I've created a JIRA - https://issues.apache.org/jira/browse/TAP5-2210 For the purpose of suggesting an "Alternatives" section for the tapestry features that would be commonly used and how to initiate NOT using them - e.g. this service implementation preventReloading() I'm sure there are a few "alternatives" that would save some mailing list time and dev-ing. Cheers Chris On Wed, Oct 16, 2013 at 10:46 PM, Martin Kersten < martin.kersten...@gmail.com> wrote: > Using serviceBinder.bind(Service, ServiceImpl).preventReloading() solves > the issue. Now I can use impl = > > (ServiceImpl)ServiceProxyUtil.getImplementation(registry.getService(Service.class)). > So I dont need to invoke methods using reflection and I have AOP and > Decoration for the rest of the service methods as long as I use the proxy > to access the methods. > > Mission successful. > > > 2013/10/16 Martin Kersten <martin.kersten...@gmail.com> > > > I checked the sources. After setting production mode to test my proxy > util > > for this it does not change reload behaviour. It seams to be only > switched > > off in case a service is bound with preventReload or a global property to > > prevent reloading is set or the service is not an interface. > > > > So in the end in production mode the reloading is enabled(?). > > > > > > 2013/10/16 Martin Kersten <martin.kersten...@gmail.com> > > > >> Dont see this to work with AOP on the LegacyInterface or do I overlook > >> something. > >> > >> Better might be the use of a legacy service and provide an extended > >> service using refelction to access the legacy service implementation > >> (subclass). Would also make it clear and nice. > >> > >> > >> 2013/10/16 Lance Java <lance.j...@googlemail.com> > >> > >>> 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; > >>> > >> > >> > > >