[
https://issues.apache.org/jira/browse/TAP5-2263?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jochen Kemnade resolved TAP5-2263.
----------------------------------
Resolution: Not A Problem
I think the matching works correctly. Feel free to reopen if you disagree.
> IOC decorator matching bug
> --------------------------
>
> Key: TAP5-2263
> URL: https://issues.apache.org/jira/browse/TAP5-2263
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-ioc
> Affects Versions: 5.4
> Reporter: Adriaan Joubert
> Assignee: Jochen Kemnade
> Labels: easyfix
>
> In our implementation we have a factory service CacheFactory, with markers,
> that is injected into a Cache service with the same markers (say @MarkerA).
> In tests, I wish to replace the CacheFactory with
> @Decorate
> @MarkerA
> public CacheFactory decorate(...) {}
> However I get an error that the decorate method returns the wrong type.
> The cause is that the matching of the decorators in the module implementation
> does not match on ServiceDef and markers. Specifically in
> ModuleImpl.findMatchingDecoratorDefs there is a condition
> if (def.matches(serviceDef) || markerMatched(serviceDef,
> InternalUtils.toDecoratorDef2(def)))
> result.add(def);
> which needs to be
> if (def.matches(serviceDef) && markerMatched(serviceDef,
> InternalUtils.toDecoratorDef2(def)))
> result.add(def);
> to fix the problem. With the || it matches unrelated service definitions with
> the same markers.
> Thanks!
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)