Java 类org.apache.camel.core.osgi.OsgiCamelContextPublisher 实例源码

项目:Camel    文件:CamelContextFactoryBean.java   
@Override
public void afterPropertiesSet() throws Exception {
    super.afterPropertiesSet();
    // setup the application context classloader with the bundle delegating classloader
    ClassLoader cl = new BundleDelegatingClassLoader(bundleContext.getBundle());
    LOG.debug("Set the application context classloader to: {}", cl);
    getContext().setApplicationContextClassLoader(cl);
    osgiCamelContextPublisher = new OsgiCamelContextPublisher(bundleContext);
    osgiCamelContextPublisher.start();
    getContext().getManagementStrategy().addEventNotifier(osgiCamelContextPublisher);
    try {
        getClass().getClassLoader().loadClass("org.osgi.service.event.EventAdmin");
        getContext().getManagementStrategy().addEventNotifier(new OsgiEventAdminNotifier(bundleContext));
    } catch (Throwable t) {
        // Ignore, if the EventAdmin package is not available, just don't use it
        LOG.debug("EventAdmin package is not available, just don't use it");
    }
    // ensure routes is setup
    setupRoutes();
}
项目:Camel    文件:AbstractCamelRunner.java   
protected void setupCamelContext(final BundleContext bundleContext, final String camelContextId) throws Exception {
    // Set up CamelContext
    if (camelContextId != null) {
        context.setNameStrategy(new ExplicitCamelContextNameStrategy(camelContextId));
    }
    // TODO: allow to configure these options and not hardcode
    context.setUseMDCLogging(true);
    context.setUseBreadcrumb(true);

    // Add routes
    for (RoutesBuilder route : getRouteBuilders()) {
        context.addRoutes(configure(context, route, log));
    }

    // ensure we publish this CamelContext to the OSGi service registry
    context.getManagementStrategy().addEventNotifier(new OsgiCamelContextPublisher(bundleContext));
}
项目:Camel    文件:CamelContextOsgiProducer.java   
@Override
public T produce(CreationalContext<T> ctx) {
    T context = super.produce(ctx);

    // Register the context in the OSGi registry
    BundleContext bundle = BundleContextUtils.getBundleContext(getClass());
    context.getManagementStrategy().addEventNotifier(new OsgiCamelContextPublisher(bundle));

    if (!(context instanceof DefaultCamelContext)) {
        // Fail fast for the time being to avoid side effects by some methods get declared on the CamelContext interface
        throw new InjectionException("Camel CDI requires Camel context [" + context.getName() + "] to be a subtype of DefaultCamelContext");
    }

    DefaultCamelContext adapted = context.adapt(DefaultCamelContext.class);
    adapted.setRegistry(OsgiCamelContextHelper.wrapRegistry(context, context.getRegistry(), bundle));
    CamelContextNameStrategy strategy = context.getNameStrategy();
    OsgiCamelContextHelper.osgiUpdate(adapted, bundle);
    // FIXME: the above call should not override explicit strategies provided by the end user or should decorate them instead of overriding them completely
    if (!(strategy instanceof DefaultCamelContextNameStrategy)) {
        context.setNameStrategy(strategy);
    }

    return context;
}
项目:camel-cdi    文件:CamelContextOsgiProducer.java   
@Override
public T produce(CreationalContext<T> cc) {
    T context = super.produce(cc);

    // Register the context in the OSGi registry
    BundleContext bundle = BundleContextUtils.getBundleContext(getClass());
    context.getManagementStrategy().addEventNotifier(new OsgiCamelContextPublisher(bundle));

    if (!(context instanceof DefaultCamelContext))
        // Fail fast for the time being to avoid side effects by some methods get declared on the CamelContext interface
        throw new DeploymentException("Camel CDI requires Camel context [" + context.getName() + "] to be a subtype of DefaultCamelContext");

    DefaultCamelContext adapted = context.adapt(DefaultCamelContext.class);
    adapted.setRegistry(OsgiCamelContextHelper.wrapRegistry(context, context.getRegistry(), bundle));
    CamelContextNameStrategy strategy = context.getNameStrategy();
    OsgiCamelContextHelper.osgiUpdate(adapted, bundle);
    // FIXME: the above call should not override explicit strategies provided by the end user or should decorate them instead of overriding them completely
    if (!(strategy instanceof DefaultCamelContextNameStrategy))
        context.setNameStrategy(strategy);

    return context;
}
项目:Camel    文件:BlueprintCamelContext.java   
private void maybeStart() throws Exception {
    LOG.trace("maybeStart: {}", this);

    // allow to register the BluerintCamelContext eager in the OSGi Service Registry, which ex is needed
    // for unit testing with camel-test-blueprint
    boolean eager = "true".equalsIgnoreCase(System.getProperty("registerBlueprintCamelContextEager"));
    if (eager) {
        for (EventNotifier notifier : getManagementStrategy().getEventNotifiers()) {
            if (notifier instanceof OsgiCamelContextPublisher) {
                OsgiCamelContextPublisher publisher = (OsgiCamelContextPublisher) notifier;
                publisher.registerCamelContext(this);
                break;
            }
        }
    }

    // for example from unit testing we want to start Camel later and not
    // when blueprint loading the bundle
    boolean skip = "true".equalsIgnoreCase(System.getProperty("skipStartingCamelContext"));
    if (skip) {
        LOG.trace("maybeStart: {} is skipping as System property skipStartingCamelContext is set", this);
        return;
    }

    if (!isStarted() && !isStarting()) {
        LOG.debug("Starting {}", this);
        start();
    } else {
        // ignore as Camel is already started
        LOG.trace("Ignoring maybeStart() as {} is already started", this);
    }
}
项目:Camel    文件:CamelContextFactoryBean.java   
@Override
public void afterPropertiesSet() throws Exception {
    super.afterPropertiesSet();
    getContext().getManagementStrategy().addEventNotifier(new OsgiCamelContextPublisher(bundleContext));
    try {
        getClass().getClassLoader().loadClass("org.osgi.service.event.EventAdmin");
        getContext().getManagementStrategy().addEventNotifier(new OsgiEventAdminNotifier(bundleContext));
    } catch (Throwable t) {
        // Ignore, if the EventAdmin package is not available, just don't use it
        LOG.debug("EventAdmin package is not available, just don't use it");
    }
}
项目:switchyard    文件:OsgiSwitchYardCamelContextImpl.java   
/**
 * Create a new instance of OsgiSwitchYardCamelContextImpl.
 * @param bundleContext bundleContext
 */
public OsgiSwitchYardCamelContextImpl(BundleContext bundleContext) {
    _bundleContext = bundleContext;
    OsgiCamelContextHelper.osgiUpdate(this, bundleContext);
    // Ensure we publish this CamelContext to the OSGi service registry
    getManagementStrategy().addEventNotifier(new OsgiCamelContextPublisher(bundleContext));
}