[ https://issues.apache.org/jira/browse/TAP5-2263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14588270#comment-14588270 ]
Thiago H. de Paula Figueiredo commented on TAP5-2263: ----------------------------------------------------- [~jkemnade] Nope. Would you like to take it? I haven't actually started this one. > 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: Thiago H. de Paula Figueiredo > 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)