[ 
https://issues.apache.org/jira/browse/TAP5-1611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14040225#comment-14040225
 ] 

Thiago H. de Paula Figueiredo edited comment on TAP5-1611 at 6/22/14 8:29 PM:
------------------------------------------------------------------------------

bq. Since the class is being used as the key in a Map (MappedConfiguration), 
will there be any unusual behaviour after live component reloading? Will 
Class.equals() return false when we expect true?

Internally, ComponentOverrideImpl keeps and uses a Map<String, Class> (fully 
qualified class name to class instance), not a Map<Class, Class>, so that 
shouldn't be a problem. It also keeps a Map<Class, Class>, but just for logging 
and debugging purposes.

Thank you very much, Lance, for this very interesting discussion. And for 
saving me from adding a badly-named service to Tapestry! :D


was (Author: thiagohp):
bq. Since the class is being used as the key in a Map (MappedConfiguration), 
will there be any unusual behaviour after live component reloading? Will 
Class.equals() return false when we expect true?

Internally, ComponentOverrideImpl keeps and uses a Map<String, Class> (fully 
qualified class name to class inatance), not a Map<Class, Class>, so that 
shouldn't be a problem. It also keeps a Map<Class, Class>, but just for logging 
and debugging purposes.

Thank you very much, Lance, for this very interesting discussion. And for 
saving me from adding a badly-named service to Tapestry! :D

> out-of-the-box way in Tapestry for replacing components
> -------------------------------------------------------
>
>                 Key: TAP5-1611
>                 URL: https://issues.apache.org/jira/browse/TAP5-1611
>             Project: Tapestry 5
>          Issue Type: New Feature
>          Components: tapestry-core
>    Affects Versions: 5.3
>            Reporter: Jens Breitenstein
>            Assignee: Thiago H. de Paula Figueiredo
>            Priority: Minor
>              Labels: component, month-of-tapestry
>             Fix For: 5.4
>
>
> It would be nice to allow global component replacement by a different 
> component class (or derived version from the original) compared to the field 
> type provided. So @InjectComponent would behave more or less like @Inject for 
> services without the need of Interfaces. 
> NOTE: 
> current workaround is decorating ComponentInstantiatorSource 
> As Thiago outlines my workaround is sub-optimal as it bases on internal 
> classes which might subject to change without notice. He suggests to have an 
> Service we can contribute our "overrides" to. Replaceing components would 
> introduce a new level of flexibility to change implementations without 
> touching tml's at all. Naturally ServiceBinder was not my suggested place for 
> this new kind of "binding", seems to be a misunderstanding. From a functional 
> point of view I was just thinking about something like...
>       public static void bind(final ComponentBinder binder)
>       {
>               binder.bind(ComponentA,class, ComponentBderivedFromA.class);
>       }
> ...this, as an example. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to