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

Christian Schneider commented on CAMEL-4381:
--------------------------------------------

I have now finished an implementation. org.apache.camel.StateFulService is the 
interface for services that support start, stop, suspend, resume. So every 
class that does not need the implementation uses this interface. 

ServiceSupport is moved to org.apache.camel.support a deprecated stub is left 
in impl. ServiceSupport does not support children.
For this case ChildServiceSupport is used.

Now one thing I struggle with a bit is DefaultTimeOutMap and some related 
classes. It needs ServiceSupport so if we keep it in util then we have a 
dependency from util to support. On the other hand currently 
ChildServiceSupport uses ServiceHelper. So we have a dependency from support to 
util. 

I see two solutions: 
1) Move DefaulTimeOutMap to support
2) Do not use ServiceHelper in ServiceSupport

In the end it comes down to the question: Should support classes be allowed to 
use util classes? Then we have to go with 1)

> Simplify ServiceSupport and introduce ServiceWithStatus interface to remove 
> tangle between util and support
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-4381
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4381
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-core
>    Affects Versions: 2.8.0
>            Reporter: Christian Schneider
>            Assignee: Christian Schneider
>             Fix For: 2.9.0
>
>
> Currently ServiceSupport and ServiceHelper form a dependency cycle. 
> ServiceSupport calls ServiceHelper to start and stop services and 
> ServiceSupport operate on ServiceSupport classes.
> To solve that I introduce an Interface ServiceWithSupport (open for a better 
> naming). This interface extends Service and has all relevant methods from 
> ServiceSupport. So ServiceHelper can operate on ServiceWithStatus and the 
> tangle goes away. 
> Addtionally I split up ServiceSupport into ServiceSupport which has no 
> children and ChildServiceSupport which has. This is because we seem to have 
> only two classes that actually use the children functionality. The rest of 
> the classes that extend ServiceSupport have no children. So having them all 
> extend the old ServiceSupport introduces a lot of unneeded complexity.
> The change should be fairly compatible. The only possible problem are third 
> party components that use children. As we only had two such components in 
> camel the chance that something breaks is fairly low.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to