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

Benedikt Ritter commented on CHAIN-98:
--------------------------------------

Hi Jonas,

patch #2 has been applied, see [r1499551|http://svn.apache.org/r1499551]. 
Thanks for the great work. This was surely not the easiest issue to start with 
:) I had to adjust a few things a little bit:

 * added Apache License Header to the Processing enum
 * Removed some white spaces on empty lines
 * Changed CountCommand and ForwardCommand in chain-example2 and CatalogTest in 
chain-cookbook-examples. Those were still using the boolean return value. You 
should always run mvn clean test, once you are confident you have finished a 
patch (sometimes that reveals that you aren't ;)).

We still have work to do, so I'm not closing the issue. Here are the points 
that are still missing/have to be adjusted:
 
 * The Filter interface's {{postProcess}} method still returns boolean. I think 
it would be convenient if it would also return Processing
 * The semantics of {{o.a.c.chain.base.DispatchCommand.evaluateResult(Object 
obj)}} have changed. The JavaDoc says that the implementation assumes that obj 
is of type Boolean. Before the patch it simply casted to Boolean without type 
checking. So if for whatever reason some other type would have been passed to 
that method a ClassCastException would have been thown. This seems to be a 
reasonable protocol, given the documentation in the JavaDoc. Your patch changed 
this and added a instanceof test. DispatchCommand now checks if it can cast and 
only then casts to Processing. If obj is not of type Processing, continue is 
returned. I think if obj is not of type Processing, something has gone wrong. 
So we should just let the ClassCastException populate to the user. WDYT?
 * I think ChainBase shouldn't throw a ChainException if a Command returns 
null. IllegalStateException fits better here, IMHO.

So if you got some spare time... :)
                
> Refactor command interface and base Implementations to enumeration to 
> represent states
> --------------------------------------------------------------------------------------
>
>                 Key: CHAIN-98
>                 URL: https://issues.apache.org/jira/browse/CHAIN-98
>             Project: Commons Chain
>          Issue Type: Task
>    Affects Versions: 2.0
>            Reporter: Jonas Sprenger
>            Assignee: Benedikt Ritter
>             Fix For: 2.0
>
>         Attachments: chain-98-2.patch, chain-98.patch
>
>
> Base implementations should return the constants CONTINUE_PROCESSING or 
> PROCESSING_COMPLETE instead of returning true or false

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to