/** * Add the route in the database if it's not already, or update its state. * * @param routes being added to the app */ @Override public void onRoutesAdd(Collection<Route> routes) { for (Route routeCamel : routes) { // adding a performance counter on the route if (routeCamel instanceof EventDrivenConsumerRoute) { EventDrivenConsumerRoute edcr = (EventDrivenConsumerRoute) routeCamel; Processor processor = edcr.getProcessor(); if (processor instanceof InstrumentationProcessor) { InstrumentationProcessor ip = (InstrumentationProcessor) processor; ConsolePerformanceCounter counter = new ConsolePerformanceCounter(routeCamel.getId(), repository); ip.setCounter(counter); log.debug("Adding a counter" + counter.toString() + " to " + routeCamel.getId()); } } // saving route in database log.debug("Route added " + routeCamel.getId()); com.ninja_squad.console.Route route = repository.findRoute(routeCamel.getId()); if (route == null) { route = new com.ninja_squad.console.Route(routeCamel.getId()) .state(State.Started) .uri(routeCamel.getEndpoint().getEndpointUri()); ObjectMapper mapper = new ObjectMapper(); AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()); // make serializer use JAXB annotations (only) mapper.setAnnotationIntrospector(introspector); String definition = null; RouteDefinition routeDefinition = routeCamel.getRouteContext().getRoute(); try { definition = mapper.writeValueAsString(routeDefinition); } catch (IOException e) { log.error("Error while marshalling route definition", e); } route.setDefinition(definition); for (ProcessorDefinition<?> stepDefinition : routeDefinition.getOutputs()) { if (stepDefinition.getId() == null) { stepDefinition.setId(stepDefinition.getClass().getSimpleName()); } route.getSteps().put(stepDefinition.getId(), stepDefinition.getLabel()); } repository.save(route); } // saving state in database RouteState routeState = repository.lastRouteState(routeCamel.getId()); if (routeState == null || routeState.getState().equals(State.Stopped)) { routeState = new RouteState(); routeState.setRouteId(routeCamel.getId()); routeState.setState(State.Started); routeState.setTimestamp(DateTime.now().getMillis()); repository.save(routeState); } } }
@SuppressWarnings("rawtypes") @Override protected void loadPropertiesFromCamelDefinition(ProcessorDefinition processor) { super.loadPropertiesFromCamelDefinition(processor); if (processor instanceof PolicyDefinition) { PolicyDefinition node = (PolicyDefinition) processor; this.setRef(node.getRef()); } else { throw new IllegalArgumentException( "ProcessorDefinition not an instanceof PolicyDefinition. Was " + processor.getClass().getName()); } }
@SuppressWarnings("rawtypes") @Override protected void loadPropertiesFromCamelDefinition(ProcessorDefinition processor) { super.loadPropertiesFromCamelDefinition(processor); if (processor instanceof DelayDefinition) { DelayDefinition node = (DelayDefinition) processor; this.setExpression(node.getExpression()); this.setExecutorServiceRef(node.getExecutorServiceRef()); this.setAsyncDelayed(node.getAsyncDelayed()); this.setCallerRunsWhenRejected(node.getCallerRunsWhenRejected()); } else { throw new IllegalArgumentException( "ProcessorDefinition not an instanceof DelayDefinition. Was " + processor.getClass().getName()); } }
@SuppressWarnings("rawtypes") @Override protected void loadPropertiesFromCamelDefinition(ProcessorDefinition processor) { super.loadPropertiesFromCamelDefinition(processor); if (processor instanceof LoadBalanceDefinition) { LoadBalanceDefinition node = (LoadBalanceDefinition) processor; this.setInheritErrorHandler(Objects.<Boolean>getField(node, "inheritErrorHandler")); this.setRef(node.getRef()); this.setLoadBalancerType(node.getLoadBalancerType()); } else { throw new IllegalArgumentException( "ProcessorDefinition not an instanceof LoadBalanceDefinition. Was " + processor.getClass().getName()); } }