Remove Design Tangles in componts file and impl
-----------------------------------------------

                 Key: CAMEL-262
                 URL: https://issues.apache.org/activemq/browse/CAMEL-262
             Project: Apache Camel
          Issue Type: Improvement
          Components: camel-core
            Reporter: Christian Schneider
             Fix For: 1.3.0
         Attachments: new-no tangle in impl Main cluster (30).png, patch.txt, 
tangle in impl Main cluster (26).png

I have used structure101 on camel and found some design tangles that are quite 
easy to resolve.

The first is in impl. Defaultcomponent contains a special case to handle 
ScheduledPollEndpoint. As they reference each other there is a dependency 
tangle. I have attached a screenshot from struture101 with current and 
suggested status.
This is the current code:
if (endpoint instanceof ScheduledPollEndpoint) {
                ScheduledPollEndpoint scheduledPollEndpoint = 
(ScheduledPollEndpoint)endpoint;
                scheduledPollEndpoint.configureProperties(parameters);
}
My suggestion is to add configureProperties to Endpoint and DefaultEndpoint. So 
any endpoint offers this useful method. The code is then simpler and the tangle 
is resolved:
endpoint.configureProperties(parameters);

The second tangle is in components file. The package file and strategy 
reference each other heavily. I have attached screenshots of the tangle.
This is because The strategies are configured directly in Endpoint (package 
file). My suggestion is to create a factory inside the package strategy. So 
there is only on dependency from file to strategy.  Another reason is that the 
FileProcessStrategy interface is in the strategy package. I think this 
interface belongs to the package file.  Using these two changes I managed to 
reduce the dependencies between strategy and file from 12/17 to 8/1. This makes 
the code much easier to grasp as you can understand the packages separately.

I have attached a patch and screenshots for both issues. 

What do you think?


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to