camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian Schneider (JIRA)" <>
Subject [jira] [Commented] (CAMEL-4381) Simplify ServiceSupport and introduce ServiceWithStatus interface to remove tangle between util and support
Date Mon, 29 Aug 2011 16:00:38 GMT


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 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:
>             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:


View raw message