Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fennec Camel - Dynamic Apache Camel Integration Platform

CI BuildLicenseSonarBugsCode SmellsCoverageMaintainability RatingQuality Gate StatusReliability RatingSecurity RatingTechnical DebtVulnerabilities

A dedicated Apache Camel workspace focused on building dynamic, configuration-driven Camel integration solutions using OSGi whiteboard pattern. The project contains EMF-based models for pipeline definitions and OSGi bundles for dynamic Camel context management.

Project Structure

Core OSGi Bundles

EMF Pipeline Models & Whiteboard Implementation

  • org.eclipse.fennec.camel.whiteboard: EMF pipeline models and whiteboard implementation

    • Active: EMF generated pipeline models (src-gen/org/eclipse/fennec/camel/whiteboard/pipeline/)
    • CamelCondition Service: Infrastructure readiness coordination for OsgiCamelContext
    • Archived: Complete whiteboard reference implementation (src/org/eclipse/fennec/camel/old/)
  • org.eclipse.fennec.camel.model: EMF model definitions for pipeline configuration

    • Ecore models for camel-spring integration and pipeline definitions
  • org.eclipse.fennec.camel.whiteboard.tests: OSGi integration tests for whiteboard implementation

    • Integration test patterns and CamelCondition service testing

Working Examples & Reference Implementations

Kafka Integration

  • org.apache.kafka.clients: Apache Kafka clients bundle for Kafka connectivity
  • org.eclipse.fennec.kafka: Fennec Kafka integration with EObject support
    • KafkaEObjectConsumer and KafkaEObjectProducer for EMF object streaming
    • RobustKafkaConsumer and RobustKafkaProducer for reliable messaging

Demo & Testing

  • org.eclipse.fennec.demo.model: Demo EMF model (addressbook) for testing and examples

Development Infrastructure

Build & Configuration

  • cnf/: BND workspace configuration
    • build.bnd: Workspace build configuration
    • central.mvn, eclipse.mvn, apache.mvn: Maven repository configurations
  • gradle/: Gradle wrapper and build infrastructure
  • sources/: Reference source implementations (camel-blueprint, camel-core-osgi, osgi-test)

External Services Setup

  • redpanda/: Kafka-compatible streaming platform setup
    • Docker Compose configuration for local development
    • Management scripts for cluster operations
    • See redpanda/README.md for Redpanda setup and usage

Key Features

OSGi-Native Architecture

  • Configuration-Driven Pipelines: EMF models for type-safe pipeline definitions
  • Dynamic Service Discovery: OSGi whiteboard pattern for component registration
  • Dependency Tracking: Service readiness coordination with CamelCondition
  • Early Activation: Components activate immediately for monitoring, with deferred Camel context creation

Apache Camel Integration

  • OsgiDefaultCamelContext: Full OSGi service registry integration
  • EMF Type Converters: Automatic XML ↔ EObject conversions
  • Component Whiteboard: Dynamic component discovery and configuration
  • Route Providers: Service-based route contribution with ordering

Message Streaming

  • Kafka Integration: Native Kafka support with EObject serialization
  • Redpanda Setup: Local streaming platform for development and testing
  • Robust Producers/Consumers: Error handling and retry mechanisms

Quick Start

Build the Project

# Build all bundles
./gradlew build

# Run OSGi integration tests  
./gradlew testOSGi

# Generate test coverage
./gradlew codeCoverageReport

Run Camel Examples

# Start the working Camel example
cd org.apache.camel
./gradlew resolve.camel
java -jar generated/camel.jar

Start Kafka/Redpanda for Messaging

# Start Redpanda cluster for Kafka messaging
cd redpanda
./redpanda-setup.sh start

# Open Redpanda Console
./redpanda-setup.sh console

# Create test topics
./redpanda-setup.sh topics

Run Integration Tests

# Run whiteboard integration tests
cd org.eclipse.fennec.camel.whiteboard.tests  
./gradlew testOSGi

# Run Kafka integration tests
cd org.eclipse.fennec.kafka
./gradlew testOSGi

Architecture Overview

EMF Pipeline Models

  • PipelineDefinition: Reusable pipeline templates with dependencies and parameters
  • ConsumerConfiguration: Consumer instances that use pipelines with parameter values
  • ServiceDependency: Tracks OSGi service dependencies with filters and cardinality
  • TextualRouteDefinition: YAML/JSON/XML route definitions

OSGi Whiteboard Pattern

  • ConfigurationAgent: Processes EMF consumer configurations
  • PipelineWhiteboardInstance: Per-pipeline components with dependency tracking
  • CamelCondition: Infrastructure readiness coordination service
  • Route Providers: Service-based route contribution with startup ordering

Development Status

The project has completed a dynamic, configuration-driven Camel pipeline architecture using OSGi native capabilities. The implementation leverages battle-tested OSGi infrastructure (ConfigAdmin + ServiceTrackers + Felix SCR) instead of custom solutions, resulting in 90% code reduction with proven reliability.

Documentation

Project Documentation

  • CLAUDE.md: Complete development guide and architecture overview
  • org.eclipse.fennec.camel.whiteboard/docs/: Detailed architecture documentation
    • DEVELOPMENT_DIARY.md: Implementation progress and decisions
    • CAMEL_WHITEBOARD_ARCHITECTURE.md: Whiteboard pattern details
    • DYNAMIC_PIPELINE_REQUIREMENTS.md: Pipeline requirements and patterns

Working Examples Documentation

Integration Tutorials

External Services Documentation

Key Libraries and Dependencies

  • Apache Camel 4.10+: Core integration framework with OSGi support
  • Eclipse EMF: Core modeling framework for pipeline definitions
  • Gecko EMF OSGi: OSGi integration for EMF
  • Apache Felix: OSGi framework implementation
  • BND/Gradle: OSGi bundle tooling and build system
  • Apache Kafka: Message streaming platform
  • Redpanda: Kafka-compatible streaming platform for development
  • JUnit 5: Testing framework with OSGi support

License

Eclipse Public License 2.0

Copyright (c) 2012 - 2025 Data In Motion and others.

Contributors

About

EMF Camel Whiteboard

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors