@Override public void configure() throws Exception { LOG.debug("Started REST data stream source at port {}.", port); from("netty4-http:http://0.0.0.0:" + port + "/?matchOnUriPrefix=true&httpMethodRestrict=OPTIONS,GET,POST,PUT,DELETE"). choice(). when(header(HTTP_METHOD).isEqualTo("OPTIONS")).setBody().constant("").endChoice(). otherwise(). setHeader(CONTENT_TYPE).constant(contentType). process( exc -> { String requestUri = exc.getIn().getHeader(HTTP_URI, String.class); LOG.debug("Processing request URI: {}", requestUri); String trimmedUri = removeEnd(requestUri, "/"); LOG.debug("Trimmed request URI: {}", trimmedUri); String busChannel = trimmedUri.substring(1).replaceAll("\\/", "."); exc.setProperty("target", "amqp:" + busChannel); }).toD("${property.target}").endChoice(). end(). process(exc -> { exc.getIn().setHeader("Access-Control-Allow-Origin", "*"); exc.getIn().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); }); }
public void exposeAnnotatedBeans() { for (Map.Entry<String, Object> bean : findBeansWithRestOperations(routeBuilder.getContext().getRegistry()).entrySet()) { for (Method method : findRestOperations(bean.getValue().getClass())) { String uri = "/" + bean.getKey() + "/" + method.getName(); boolean isGet = true; int parametersCount = method.getParameterCount(); if (parametersCount > 0) { Class<?> lastParameterType = method.getParameterTypes()[parametersCount - 1]; if (lastParameterType != String.class && lastParameterType != Character.class && lastParameterType != char.class && lastParameterType != Integer.class && lastParameterType != int.class && lastParameterType != Long.class && lastParameterType != long.class && lastParameterType != Float.class && lastParameterType != float.class && lastParameterType != Double.class && lastParameterType != double.class) { isGet = false; parametersCount--; } } for (int i = 0; i < parametersCount; i++) { uri += "/{p" + i + "}"; } routeBuilder.rest(uri).verb(isGet ? "GET" : "POST").route().process(restParametersBindingProcessor()). to("bean:" + bean.getKey() + "?method=" + method.getName() + "&multiParameterArray=true"). choice().when(routeBuilder.header("CAMEL_REST_VOID_OPERATION").isNotNull()).setBody().constant("").endChoice(); } } }