generic-examples/traits/telemetry/InventoryService.java (75 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* kamel run InventoryService.java --name inventory -d camel-opentracing -d mvn:io.jaegertracing:jaeger-client:1.2.0 -d rest-api -d camel-jackson --property-file application.properties */ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.model.rest.RestBindingMode; import org.apache.camel.component.jackson.JacksonDataFormat; import java.text.SimpleDateFormat; import org.apache.camel.Exchange; import java.util.Date; import java.util.Map; public class InventoryService extends RouteBuilder { @Override public void configure() throws Exception { restConfiguration() .enableCORS(true) .bindingMode(RestBindingMode.json); rest() .post("/notify/order/place") .to("direct:notify"); JacksonDataFormat invDataFormat = new JacksonDataFormat(); invDataFormat.setUnmarshalType(InventoryNotification.class); from("direct:notify") .log("notifyorder--> ${body}") .setHeader(Exchange.CONTENT_TYPE, constant("application/json")) .bean(InventoryNotification.class, "getInventoryNotification(${body['orderId']},${body['itemId']},${body['quantity']} )") .marshal(invDataFormat) .log("Inventory Notified ${body}") .convertBodyTo(String.class) ; } private static class InventoryNotification { private Integer orderId; private Integer itemId; private Integer quantity; private String department; private Date datetime; public static InventoryNotification getInventoryNotification(Integer orderId, Integer itemId, Integer quantity ){ InventoryNotification invenNotification = new InventoryNotification(); invenNotification.setOrderId(orderId); invenNotification.setItemId(itemId); invenNotification.setQuantity(quantity); invenNotification.setDepartment("inventory"); SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); invenNotification.setDatetime(new Date(System.currentTimeMillis())); return invenNotification; } public void setOrderId(Integer orderId){ this.orderId=orderId; } public void setItemId(Integer itemId){ this.itemId=itemId; } public void setQuantity(Integer quantity){ this.quantity=quantity; } public Integer getOrderId(){ return this.orderId; } public Integer getItemId(){ return this.itemId; } public Integer getQuantity(){ return this.quantity; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public Date getDatetime() { return datetime; } public void setDatetime(Date datetime) { this.datetime = datetime; } } }