in salesforce/src/main/java/org/apache/camel/example/salesforce/SalesforceRouter.java [57:116]
public void configure() throws Exception {
// Configure REST endpoint using servlet component and JSON binding
restConfiguration()
.component("servlet") // Use servlet as the HTTP server
.bindingMode(RestBindingMode.json); // Enable automatic JSON data binding
// Define REST endpoint that responds to GET requests
rest("/contacts")
.get()
.id("Rest-based route: all contacts") // Create GET endpoint at /contacts path
.to("direct:getContacts?synchronous=true") // Route requests to direct:getContacts endpoint
.get("/{id}")
.id("Rest-based route: contact by id") // Create GET endpoint with path parameter
.to("direct:getContactById?synchronous=true") // Route requests to direct:getContactById endpoint
.put("/{id}")
.id("Rest-based route: update contact by id") // Create PUT endpoint with path parameter
.to("direct:updateContactById?synchronous=true"); // Route requests to direct:updateContactById endpoint
// Define route that queries Salesforce contacts
from("direct:getContacts")
.id("getContacts")
// Execute SOQL query to get Contact objects from Salesforce
.to("salesforce:queryAll?sObjectQuery=SELECT Id, Name, Email FROM Contact")
// Uncommented debug logging line
// .to("log:debug?showAll=true&multiline=true")
// Convert Salesforce response to JSON using Jackson library
.unmarshal().json(JsonLibrary.Jackson);
// Define route that queries Salesforce contacts
from("direct:getContactById")
.id("getContactById")
// Execute SOQL query to get Contact objects from Salesforce
.toD("salesforce:getSObject?sObjectName=Contact&sObjectId=${header.id}")
// Uncommented debug logging line
// .to("log:debug?showAll=true&multiline=true");
// Convert Salesforce response to JSON using Jackson library
.unmarshal().json(JsonLibrary.Jackson);
// Define route that updates a Salesforce contact by ID
from("direct:updateContactById")
.id("updateContactById")
// Convert the input body to JSON format using Jackson library
.marshal().json(JsonLibrary.Jackson)
// Convert the JSON to String format for Salesforce update
.convertBodyTo(String.class)
// Uncommented debug logging line for troubleshooting
// .to("log:debug?showAll=true&multiline=true")
// Update the Contact object in Salesforce using the ID from the header
.toD("salesforce:updateSObject?sObjectName=Contact&sObjectId=${header.id}");
// Define route that listens for Salesforce CDC events for Contact objects
from("salesforce:subscribe:data/ContactChangeEvent")
.id("Listener Salesforce CDC events") // Set route ID for monitoring
// Uncommented debug logging line
// .to("log:debug?showAll=true&multiline=true");
// Convert Salesforce response to JSON using Jackson library
.unmarshal().json(JsonLibrary.Jackson)
// Log the CDC event at INFO level
.log(LoggingLevel.INFO, "A new event: ${body}");
}