[
https://issues.apache.org/jira/browse/OWB-435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12898074#action_12898074
]
Joe Bergmark commented on OWB-435:
----------------------------------
I agree that #1 sounds like a bug. I'll try and take a look at it
#2 is probably just the way it has to work. You can't know when the dependent
Decorators are built up what method is going to be called. Even if you could,
you don't know if another Decorator in the stack might have changed the method
to one that later Decorator could have been involved with.
> What is the expected result for following 2 decorators?
> -------------------------------------------------------
>
> Key: OWB-435
> URL: https://issues.apache.org/jira/browse/OWB-435
> Project: OpenWebBeans
> Issue Type: Question
> Components: Interceptor and Decorators
> Reporter: YING WANG
> Assignee: Gurkan Erdogdu
> Priority: Minor
>
> While I am testing 2 decorators decorate the same getName() method of
> UserBean, I found the result is:
> 1. "UserDecorator1(UserDecorator2(MYNAME)) " <== Did call
> UserDecorator1.getName() first, but before it finishes, it recursively
> invokes the UserDecorator2.getName() on the calling stack.
> 2. or should the result be:
> "UserDecorator2(MYNAME)" <==== should decorator2's result overwrite
> decorator1's?
> 3. or should the result be:
> "UserDecorator2(UserDecorator1(MYNAME)) " <==== should decorator1's result
> to the one used for decorator2?
> I prefer 3, but I am not sure which result is the correct one....
> ===================Userbean ========================
> public class UserBean implements UserInterface, Serializable
> {
> public String getName()
> {
> return "MYNAME";
> }
> }
> ===================UserDecorator1 ========================
> @Decorator
> public abstract class UserDecorator1 implements UserInterface, Serializable
> {
> @Inject @Delegate @Any UserInterface ui;
>
> public String getName() {
> return "UserDecorator1(" + ui.getName() + ")";
> }
> }
> ===================UserDecorator2 ========================
> @Decorator
> public abstract class UserDecorator2 implements UserInterface, Serializable
> {
> @Inject @Delegate @Any UserInterface ui;
>
> public String getName() {
> return "UserDecorator2(" + ui.getName() + ")";
> }
> }
> ========================================================
> <decorators>
> <class>com.jcdi.test.UserDecorator1</class>
> <class>com.jcdi.test.UserDecorator2</class>
> </decorators>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.