anchor.diff:  Camel. You can mix and match the annotations with the normal parameters,
   so we can have this example with annotations and the Exchange also:
   
  -[source,syntaxhighlighter-pre]
  -----
  +[source,java]
  +----
  +public class MyBean {
  +
       public void doSomething(@Header("user") String user, @Body String body, Exchange exchange) {
           exchange.getIn().setBody(body + "MyBean");
       }
  -----
  -
  -[[ParameterBindingAnnotations-AnnotationBasedExpressionLanguage]]
  +
  +}
  +----
  +
   === Annotation Based Expression Language
   
   You can also use any of the xref:languages.adoc[Languages] supported in
   Camel to bind expressions to method parameters when using
  -xref:bean-integration.adoc[Bean Integration]. For example you can use
  +xref:bean-integration.adoc[Bean Integration]. For example, you can use
   any of these annotations:
   
   [width="100%",cols="50%,50%",options="header",]
   |=======================================================================
   |Annotation |Description
  -|`org.apache.camel.language.Bean`
  +|`@Bean`
   |Inject a xref:components:languages:bean-language.adoc[Bean] expression
   
  -|`org.apache.camel.language.Constant`
  +|`@Constant`
   |Inject a xref:components:languages:constant-language.adoc[Constant] expression
   
  -|`org.apache.camel.builder.script.Groovy`
  +|`@Groovy`
   |Inject a  xref:components:languages:groovy-language.adoc[Groovy] expression
   
  -|`org.apache.camel.Header`
  +|`@Header`
   |Inject a xref:components:languages:header-language.adoc[Header] expression
   
  -|`org.apache.camel.language.mvel.MVEL`
  -|Inject a xref:components:languages:mvel-language.adoc[MVEL] expression
  -
  -|`org.apache.camel.language.ognl.OGNL`
  -|Inject an xref:components:languages:ognl-language.adoc[OGNL] expression
  -
  -|`org.apache.camel.language.Simple`
  +|`@Simple`
   |Inject an xref:components:languages:simple-language.adoc[Simple] expression
   
  -|`org.apache.camel.language.XPath`
  +|`@XPath`
   |Inject an xref:components:languages:xpath-language.adoc[XPath] expression
   
  -|`org.apache.camel.component.xquery.XQuery`
  -|Inject an xref:components:languages:xquery-language.adoc[XQuery] expression
  -|=======================================================================
  -
  -[[ParameterBindingAnnotations-Example:]]
  -==== Example
  -
  -[source,syntaxhighlighter-pre]
  +|=======================================================================
  +
  +The table above only list some of the commonly used languages. You can find
  +a list of all supported xref:latest@components:languages:index.adoc[Languages]
  +which each have their own annotation that can be used.
  +
  +It is required to include the JAR of the language, for example `camel-groovy`,
  +or `camel-jsonpath` to use the `@JSonPath` annotation.
  +
  +Here is an example how to use `@XPath`:
  +
  +[source,java]
   ----
   public class Foo {
  +
  +    @Consume("activemq:my.queue")
  +    public void doSomething(@XPath("/foo/bar/text()") String correlationID, @Body String body) {
  +        // process the inbound message here
  +    }
  +
  +}
  +----
  +
  +==== Advanced example using @Bean
  +
  +And an example of using the the `@Bean` binding annotation,
  +where you can call a xref:components::bean-component.adoc[POJO] to supply
  +the parameter value:
  +
  +[source,java]
  +----
  +public class MyBean {
       
  -    @MessageDriven(uri = "activemq:my.queue")
  -    public void doSomething(@XPath("/foo/bar/text()") String correlationID, @Body String body) {
  -        // process the inbound message here
  -    }
  -}
  -----
  -
  -[[ParameterBindingAnnotations-AdvancedexampleusingBean]]
  -==== Advanced example using @Bean
  -
  -And an example of using the the
  -org.apache.camel.language/Bean.adoc[@Bean]
  -binding annotation, where you can use a xref:components::bean-component.adoc[POJO] where you
  -can do whatever java code you like:
  -
  -[source,syntaxhighlighter-pre]
  -----
  -public class Foo {
  -    
  -    @MessageDriven(uri = "activemq:my.queue")
  +    @Consume("activemq:my.queue")
       public void doSomething(@Bean("myCorrelationIdGenerator") String correlationID, @Body String body) {
           // process the inbound message here
       }
   }
   ----
   
  -And then we can have a spring bean with the id
  -*myCorrelationIdGenerator* where we can compute the id.
  -
  -[source,syntaxhighlighter-pre]
  +When a message is consumed from the activemq queue, then Camel will invoke the `doSomething`
  +method. The parameter with `@Bean` is telling Camel to call yet another bean that
  +computes the correlation id parameter:
  +
  +[source,java]
   ----
   public class MyIdGenerator {
   
  
positive.code: [[ParameterBindingAnnotations-ParameterBindingAnnotations]]
  = Parameter Binding Annotations
  
  **camel-core**
  
  The annotations below are all part of *camel-core* and thus does not
  require *camel-spring* or xref:spring.adoc[Spring]. These annotations
  can be used with the xref:components::bean-component.adoc[Bean] component or when invoking
  beans in the xref:dsl.adoc[DSL]
  
  Annotations can be used to define an xref:expression.adoc[Expression] or
  to extract various headers, properties or payloads from a
  
negative.code: ----
  
  In the above Camel will extract the value of
  `Message.getJMSCorrelationID()`, then using the
  xref:type-converter.adoc[Type Converter] to adapt the value to the type
  of the parameter if required - it will inject the parameter value for
  the *correlationID* parameter. Then the payload of the message will be
  converted to a String and injected into the *body* parameter.
  
  TIP: You don't necessarily need to use the `@Consume` annotation if you don't
  want to as you could also make use of the Camel xref:dsl.adoc[DSL] to
  route to the bean's method as well.
  
  === Using the DSL to invoke the bean method
  
  Here is another example which does not use xref:pojo-consuming.adoc[POJO
  Consuming] annotations but instead uses the xref:dsl.adoc[DSL] to route
  messages to the bean method
  
  [source,java]
  ----
  public class MyBean {
  
      public void doSomething(@Header("JMSCorrelationID") String correlationID, @Body String body) {
          // process the inbound message here
      }
  