com.rh.consulting.twitterroute.CamelRunner.java Source code

Java tutorial

Introduction

Here is the source code for com.rh.consulting.twitterroute.CamelRunner.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rh.consulting.twitterroute;

import com.google.common.collect.Sets;
import java.util.Set;
import org.apache.camel.CamelContext;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.core.osgi.OsgiDefaultCamelContext;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality;
import org.osgi.service.component.annotations.ReferencePolicy;
import org.osgi.service.component.annotations.ReferencePolicyOption;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * @author jeckste
 */
@Component(immediate = true)
public class CamelRunner {

    private static final Logger LOG = LoggerFactory.getLogger(CamelRunner.class);

    private CamelContext context;

    private Set<RoutesBuilder> routesBuilders;

    public CamelRunner() {
        routesBuilders = Sets.newConcurrentHashSet();
    }

    @Activate
    public void activate(BundleContext bundleContext) throws Exception {
        context = new OsgiDefaultCamelContext(bundleContext);
        context.start();
        routesBuilders.forEach(rb -> {
            try {
                context.addRoutes(rb);
            } catch (Exception ex) {
                LOG.error(ex.getMessage(), ex);
            }
        });
    }

    @Deactivate
    public void deactivate() throws Exception {
        context.stop();
    }

    @Reference(service = RoutesBuilder.class, cardinality = ReferenceCardinality.AT_LEAST_ONE, policy = ReferencePolicy.DYNAMIC, policyOption = ReferencePolicyOption.GREEDY, unbind = "unbindRouteBuilder")
    public void getRouteBuilder(RoutesBuilder routesBuilder) {
        if (context != null) {
            try {
                context.addRoutes(routesBuilder);
            } catch (Exception ex) {
                LOG.error(ex.getMessage(), ex);
            }
        }
        routesBuilders.add(routesBuilder);
    }

    public void unbindRouteBuilder(RoutesBuilder routesBuilder) {
    }

}