Red Hat Training

A Red Hat training course is available for Red Hat Fuse

12.2. Injecting Properties Into Service Implementation

Implementation properties allow you to inject one or more property values into a service implementation. This is based on the property support in the SCA assembly specification. Since the property is injected into service implementation logic, the injection mechanism itself is unique to each implementation type. Here are the details for each implementation type:
  • Java: Injected using @Property into a CDI bean
  • Camel: Wired into Camel properties component and accessible in a Camel route using Camel’s own varName property notation
  • BPEL: Mapped into process variables using <assign> with using resolveProperty() XPath custom function
  • BPMN 2: Inserted into process variables by data input associations
  • Drools: Available in a global map

12.2.1. Injecting Properties in Java Bean Implementations

Implementation properties represent environmental properties that you have defined in the SwitchYard application descriptor (switchyard.xml) for your bean implementation. Implementation properties in SwitchYard are the properties that you can configure on a specific service implementation. That is, you can make the property value available to service logic executing inside an implementation container. Here is an example:
<sca:component name="SimpleServiceBean">
      <bean:implementation.bean class="com.example.switchyard.switchyard_example.SimpleServiceBean"/>
      <sca:service name="SimpleService">
        < interface="com.example.switchyard.switchyard_example.SimpleService">
            <property name="userName" value="${}"/>
To access the Implementation Properties, add an @Property annotation to your bean class identifying the property you want to inject:
public class SimpleServiceBean implements SimpleService {

  private String name;

  public String sayHello(String message) {
        return "Hello " + name + ", I got a message: " + message;


12.2.2. Injecting Implementation Properties in Camel Routes

SwitchYard integrates with the Properties Component in Camel to make system and application properties available inside your route definitions. You can inject properties into your camel route using {{propertyname}} expression, where propertyName is the name of the property. For example, the following camel route expects the property to be injected in the last <Log> statement:
<route xmlns="" id="CamelTestRoute">
    <log message="ItemId [${body}]"/>
    <to uri="switchyard://WarehouseService?operationName=hasItem"/>
    <log message="Title Name [${body}]"/>
    <log message="Properties [{{}}]"/>

12.2.3. Injecting Implementation Properties in BPEL

You can inject properties into your BPEL process definition with using SwitchYardPropertyFunction.resolveProperty() XPath custom function. In the example below, bpel:copy section copies Greeting property value into the ReplySayHelloVar variable:
 <bpel:from xmlns:property="java:org.switchyard.component.bpel.riftsaw.SwitchYardPropertyFunction"
      <![CDATA[concat(property:resolveProperty('Greeting'), $ReceiveSayHelloVar.parameters/tns:input)]]>
           <bpel:to part="parameters" variable="ReplySayHelloVar">
            <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">