blob: 431eae02f65ee785a0f6b1ccacdadf4bf1aebe49 [file] [log] [blame]
/*
* 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.
*/
package org.acme.rest.json;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.model.dataformat.JsonLibrary;
/**
* Camel route definitions.
*/
public class Routes extends RouteBuilder {
private final Set<Fruit> fruits = Collections.synchronizedSet(new LinkedHashSet<>());
private final Set<Legume> legumes = Collections.synchronizedSet(new LinkedHashSet<>());
public Routes() {
/* Let's add some initial fruits */
this.fruits.add(new Fruit("Apple", "Winter fruit"));
this.fruits.add(new Fruit("Pineapple", "Tropical fruit"));
/* Let's add some initial legumes */
this.legumes.add(new Legume("Carrot", "Root vegetable, usually orange"));
this.legumes.add(new Legume("Zucchini", "Summer squash"));
}
@Override
public void configure() throws Exception {
from("platform-http:/fruits?httpMethodRestrict=GET,POST")
.choice()
.when(simple("${header.CamelHttpMethod} == 'GET'"))
.setBody()
.constant(fruits)
.endChoice()
.when(simple("${header.CamelHttpMethod} == 'POST'"))
.unmarshal()
.json(JsonLibrary.Jackson, Fruit.class)
.process()
.body(Fruit.class, fruits::add)
.setBody()
.constant(fruits)
.endChoice()
.end()
.marshal().json();
from("platform-http:/legumes?httpMethodRestrict=GET")
.setBody().constant(legumes)
.marshal().json();
}
}