tapestry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adriaan Joubert (JIRA)" <j...@apache.org>
Subject [jira] [Created] (TAP5-2263) IOC decorator matching bug
Date Fri, 13 Dec 2013 09:46:07 GMT
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)

Mime
View raw message