= Camel Core

[TIP]
====
This page is work in progress. The layering is probably not yet correct
====

Camel-core is the basic module of apache camel. It contains the public
API and the Java DSL and several implementation packages.

The most important packages are:
[width="100%",cols="20%,80%",options="header",]
|=======================================================================
|Package Name |Description

|builder |The Camel Domain Specific Language for creating Routes, Predicates,
Expressions and Error Handlers

|model |Contains the classes (*Type) that form the java DSL. The central class
is the RouteBuilder

|language |Language APIs and plugins for Expressions and Predicates

|component |Some simple components like bean or log. You will find most components
in the other camel modules

|impl |Implementation classes for model and camel

|processor |Processors to implement the Enterprise Integration Patterns

|spi |Service provider interfaces. Strategy APIs for implementors to extend
Camel

|camel |Base package for camel. Definitions like Message and CamelContext can be
found there
|=======================================================================

[[Camel-Core-ArchitectureDiagram]]
Architecture Diagram
--------------------

The diagram shows the (relaxed) layering of the top level packages in
camel-core. Relaxed means that a layer may reference any layer below
it.

image::architecture.png[image]

[[Camel-Core-ArchitectureDiagramincludingcurrentviolations]]
Architecture Diagram including current violations 
--------------------------------------------------

Each arrow upwards shows a violation in the layering. That means some
class inside the package references a class of a package above it. These
diagrams were built with an architecture tool called structure 101. We
have an offer from the manufacturer headway software to supply us with
licenses for all camel developers that are interested. If you want a
license please contact me (Christian Schneider chris at
die-schneider.net). I will then try to organize a license for you. +
 image::architecture_incl_violations.png[image]
