You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Adriaan Joubert (JIRA)" <ji...@apache.org> on 2013/12/13 10:46:07 UTC
[jira] [Created] (TAP5-2263) IOC decorator matching bug
Adriaan Joubert created TAP5-2263:
-------------------------------------
Summary: 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
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.1.4#6159)