[ https://issues.apache.org/jira/browse/TAP5-956?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor Drobiazko reassigned TAP5-956: ----------------------------------- Assignee: Igor Drobiazko > Refactor Save Service Contributions > ----------------------------------- > > Key: TAP5-956 > URL: https://issues.apache.org/jira/browse/TAP5-956 > Project: Tapestry 5 > Issue Type: Improvement > Components: tapestry-ioc > Reporter: Peter Rietzler > Assignee: Igor Drobiazko > > Service contributions are determined through the service name and the > 'contribute<ServiceName>' method. Prior to 5.1 this lead to problems when > service interface names were refactored (and with > https://issues.apache.org/jira/browse/TAP5-955 this problem arises again > because optional contributions would be ignored ...). > Prior to 5.1, when service contributions were ignored if they did not match, > we 'worked around' (actually no workaround is required but we wanted to be a > bit more refactoring safe ...) this issue using the following pattern: > {code} > class ModuleContributions { > public static final String MY_SERVICE = "myService"; > } > class Module { > public static void bind(ServiceBinder binder) { > binder.bind(MyService.class, > MyServiceImpl.class).withId(ModuleContributions.MY_SERVICE); > } > } > class AnotherModule { > public static void contributeMyService(....) { ... } > } > {code} > As long as we do not change the MY_SERVICE constants everything works fine. > It would be easy to support fully refactoring safe contributions, e.g.: > {code} > binder.bind(MyService.class, > MyServiceImpl.class).withId(ModuleContributions.MY_SERVICE); > @Contribute(to = ModuleContributions.MY_SERVICE) > public static void arbitraryContributionMethodName(...) > {code} > or > {code} > binder.bind(MyService.class, MyServiceImpl.class); > @Contribute(to = MyService.class) > public static void arbitraryContributionMethodName(...) > {code} > or (with markers) > {code} > binder.bind(MyService.class, MyServiceImpl.class); > @Contribute(to = MyService.class) > @MyServiceMarker > public static void arbitraryContributionMethodName(...) > {code} > This would additionally support > https://issues.apache.org/jira/browse/TAP5-955 becuase the @Contribute > annotation could have another parameter, e.g. optional. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.