@Override public SwitchYardCamelContext getContext() { return (SwitchYardCamelContext) super.getContext(); }
protected void postProcessBeforeInit(RouteBuilder builder) { if (beanPostProcessor != null) { // Inject the annotated resource beanPostProcessor.postProcessBeforeInitialization(builder, builder.toString()); } }
/** * Creates new Camel routes in route builder. * @param routeBuilder * @return */ public CamelRouteActionBuilder create(RouteBuilder routeBuilder) { CreateCamelRouteAction camelRouteAction = new CreateCamelRouteAction(); try { if (!routeBuilder.getContext().equals(getCamelContext())) { routeBuilder.configureRoutes(getCamelContext()); } else { routeBuilder.configure(); } camelRouteAction.setRoutes(routeBuilder.getRouteCollection().getRoutes()); } catch (Exception e) { throw new CitrusRuntimeException("Failed to configure route definitions with camel context", e); } camelRouteAction.setCamelContext(getCamelContext()); action.setDelegate(camelRouteAction); return this; }
@Override public void start(StartContext startContext) throws StartException { try { Module appModule = Module.getCallerModuleLoader().loadModule("swarm.application"); ModuleClassLoaderAssociationHandler.associate(appModule.getClassLoader()); try { for (Map.Entry<String, RouteBuilder> entry : fraction.getRouteBuilders().entrySet()) { String name = entry.getKey(); RouteBuilder builder = entry.getValue(); ModelCamelContext camelctx = builder.getContext(); if (name != null) { camelctx.setNameStrategy(new ExplicitCamelContextNameStrategy(name)); } builder.addRoutesToCamelContext(camelctx); systemContexts.add(camelctx); } } finally { ModuleClassLoaderAssociationHandler.disassociate(); } for (CamelContext camelctx : systemContexts) { camelctx.start(); } } catch (Exception ex) { throw new StartException(ex); } }
private RoutesDefinition mandatoryConvertToRoutesDefinition(String resource, Object instance) { final RoutesDefinition definitions; if (instance instanceof RoutesDefinition) { definitions = (RoutesDefinition)instance; } else if (instance instanceof RouteDefinition) { definitions = new RoutesDefinition(); definitions.route((RouteDefinition)instance); } else if (instance instanceof RouteBuilder) { RouteBuilder builder = (RouteBuilder)instance; try { builder.configure(); definitions = builder.getRouteCollection(); } catch (Exception e) { LOGGER.warn("Unable to configure resource: " + resource, e); throw ObjectHelper.wrapRuntimeCamelException(e); } } else { throw new IllegalArgumentException("Unable to convert instance: " + instance); } return definitions; } }
/** * Create a new route from the given RouteBuilder instance and service name. * @param routeBuilder RouteBuilder instance containing an @Route definition * @param camelContext CamelContext * @param namespace the namespace to append to switchyard:// service URIs * @return the route definition */ public static List<RouteDefinition> createRoute(RouteBuilder routeBuilder, SwitchYardCamelContext camelContext, String namespace) { // Create the route and tell it to create a route try { if (camelContext != null) { routeBuilder.setContext(camelContext); } routeBuilder.configure(); List<RouteDefinition> routes = routeBuilder.getRouteCollection().getRoutes(); if (routes.isEmpty()) { throw CamelComponentMessages.MESSAGES.noRoutesFoundinJavaDSLClass(routeBuilder.getClass().getName()); } return routes; } catch (Exception ex) { throw CamelComponentMessages.MESSAGES.failedToInitializeDSLClass(routeBuilder.getClass().getName(), ex); } }
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(); } } }
/** * Creates a new {@link Enricher} using an {@link AggregatorAdapter} that * adapts an {@link Aggregator} Spring bean identified by name * <code>aggregatorBeanName</code>. The adapter is configured to obtain * the enrichment data from the resource's response-message's body (i.e. * from the out-message's body of the exchange used to communicate with the * resource). * * @param aggregatorBeanName * name of the {@link Aggregator} bean. * @param resourceUri * URI of resource endpoint for obtaining additional data. * @return an enricher. * @throws Exception * if a producer cannot be created for the endpoint represented * by <code>resourceUri</code>. */ public Enricher enricher(String aggregatorBeanName, String resourceUri) throws Exception { Endpoint endpoint = CamelContextHelper.getMandatoryEndpoint(routeBuilder.getContext(), resourceUri); return new Enricher(aggregationStrategy(aggregatorBeanName).aggregationInput(routeBuilder.body()), endpoint.createProducer()); }
@Override public void applyRoutes(CamelContext camelContext) throws Exception { CamelRunner.removeMissingRoutes(camelContext, this.builder.getRouteCollection().getRoutes()); camelContext.addRoutes(this.builder); } }
protected void populateRoutes() throws Exception { ObjectHelper.notNull(entityManagerFactory, "entityManagerFactory", this); ObjectHelper.notNull(getTransactionTemplate(), "transactionTemplate", this); // add the monitoring service - should there be an easier way?? if (engine == null) { engine = new ActivityMonitorEngine(entityManagerFactory, getTransactionTemplate(), getProcessRules()); } CamelContext camelContext = getContext(); if (camelContext instanceof DefaultCamelContext) { DefaultCamelContext defaultCamelContext = (DefaultCamelContext) camelContext; defaultCamelContext.addService(engine); } // create the routes for the activities for (ActivityBuilder builder : activityBuilders) { from(builder.getEndpoint()).process(builder.getProcessor()); } super.populateRoutes(); }
@Override public void start(StartContext startContext) throws StartException { try { Module appModule = Module.getCallerModuleLoader().loadModule("thorntail.application"); ModuleClassLoaderAssociationHandler.associate(appModule.getClassLoader()); try { for (Map.Entry<String, RouteBuilder> entry : fraction.getRouteBuilders().entrySet()) { String name = entry.getKey(); RouteBuilder builder = entry.getValue(); ModelCamelContext camelctx = builder.getContext(); if (name != null) { camelctx.setNameStrategy(new ExplicitCamelContextNameStrategy(name)); } builder.addRoutesToCamelContext(camelctx); systemContexts.add(camelctx); } } finally { ModuleClassLoaderAssociationHandler.disassociate(); } for (CamelContext camelctx : systemContexts) { camelctx.start(); } } catch (Exception ex) { throw new StartException(ex); } }
routeBuilder.configure(); dumpRoutes(new DefaultCamelContext(), routeBuilder.getRouteCollection()); RoutesDefinition routes = routeBuilder.getRouteCollection(); assertThat(routes.getRoutes()).hasSize(1);
@Override public ExchangeDispatcher createDispatcher(final ServiceReference reference) { if (_logger.isDebugEnabled()) { _logger.debug("Creating Camel dispatcher for " + reference.getName()); } String endpoint = "direct:" + reference.getName(); RouteBuilder rb = new CamelExchangeBusRouteBuilder(endpoint, reference); try { // TODO - remove this logic once the test framework is able // to hot-replace a service endpoint. if (_camelContext.getRoute(endpoint) != null) { _camelContext.removeRoute(endpoint); if (_logger.isInfoEnabled()) { BusLogger.ROOT_LOGGER.removeRoute(endpoint); } } _camelContext.addRoutes(rb); if (_logger.isDebugEnabled()) { _logger.debug("Created route for " + endpoint + ", definition is: " + ModelHelper.dumpModelAsXml(_camelContext, rb.getRouteCollection())); } } catch (Exception ex) { throw BusMessages.MESSAGES.failedToCreateRoute(reference.getName(), ex); } ExchangeDispatcher dispatcher = new ExchangeDispatcher(_camelContext, reference); _dispatchers.put(reference.getName(), dispatcher); return dispatcher; }
@Override protected void populateRoutes() throws Exception { super.populateRoutes();
@Override public SwitchYardCamelContext getContext() { return (SwitchYardCamelContext) super.getContext(); }
routeBuilder.configure(); dumpRoutes(new DefaultCamelContext(), routeBuilder.getRouteCollection()); RoutesDefinition routes = routeBuilder.getRouteCollection(); assertThat(routes.getRoutes()).hasSize(1);
@Override public ExchangeDispatcher createDispatcher(final ServiceReference reference) { if (_logger.isDebugEnabled()) { _logger.debug("Creating Camel dispatcher for " + reference.getName()); } String endpoint = "direct:" + reference.getName(); RouteBuilder rb = new CamelExchangeBusRouteBuilder(endpoint, reference); try { // TODO - remove this logic once the test framework is able // to hot-replace a service endpoint. if (_camelContext.getRoute(endpoint) != null) { _camelContext.removeRoute(endpoint); if (_logger.isInfoEnabled()) { BusLogger.ROOT_LOGGER.removeRoute(endpoint); } } _camelContext.addRoutes(rb); if (_logger.isDebugEnabled()) { _logger.debug("Created route for " + endpoint + ", definition is: " + ModelHelper.dumpModelAsXml(rb.getRouteCollection())); } } catch (Exception ex) { throw BusMessages.MESSAGES.failedToCreateRoute(reference.getName(), ex); } ExchangeDispatcher dispatcher = new ExchangeDispatcher(_camelContext, reference); _dispatchers.put(reference.getName(), dispatcher); return dispatcher; }
public void stop() { if (rb != null) { try { cc.removeRoute(rb.toString()); } catch (Exception e) { log.error("Could not remove route " + rb + " " + e); } } }
private <T> T lookup(Class<T> type) { Set<T> processors = routeBuilder.getContext().getRegistry().findByType(type); if (processors.isEmpty() || processors.size() > 1) { throw new IllegalArgumentException("Must have exactly one processor of type " + type.getName() + ", but found " + processors.size()); } else { T processor = processors.iterator().next(); return processor; } } }
routeBuilder.configure(); dumpRoutes(new DefaultCamelContext(), routeBuilder.getRouteCollection()); RoutesDefinition routes = routeBuilder.getRouteCollection(); assertThat(routes.getRoutes()).hasSize(1);