camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Schneider <>
Subject Architecture of camel
Date Sun, 20 Jan 2008 10:39:55 GMT

is there an overview of  the camel packages, their meaning and 
composition? Is there an intended layering of the packages in the form 
upper layers may access lower layers not vice a versa? I think such an 
overview would be really helpful for new developers interested to get 
involved in camel and also for the more advanced users.

I was trying to reverse engineer the layering of the packages by using 
an architecture tool. But as there are currently many cycles in the 
package dependencies
it is not possible to get a correct layering.  I have already committed 
some easy fixes that remove cycles were I was quite sure what the 
intended layering was.
The remaining cycles are more complex. I would still like help to 
resolve the cycles but need some help with it. With the help of an 
intended architecture like mentioned above I could try to make some 

To show the current state I will try to add some diagrams of the reverse 
engineered structure to the mail. If  this does not work I will upload 
the pictures to my website and link to them.

I hope one of the core developers can help me with this.

Best regards


The first diagram is the dependency graph. It shows the packages in 
camel-core and their current dependencies.
Whereever there are cycles on of the dependecy links is marked red. This 
does not mean that exactly the red dependency is wrong but it means one 
of the two directions should probably be avoided.

The second diagram shows the layering the tool reverese engineered. Any 
upper layer / package may access lower layers but not vice a versa. The 
offending dependencies are shown as arrows. As in the diagram above this 
layering is far from perfect as the tool can not know which layer should 
be up when there are cycles. If one of the core developers can give me 
the intended layering I could create a layering diagram that shows the 
intended architecture and where dependencies do not follow this rule.


Christian Schneider

View raw message