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.
-
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/)
- Active: EMF generated pipeline models (
-
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
- org.apache.camel: Stable Working Example - Complete Apache Camel OSGi setup with EMF integration
- Proven whiteboard patterns with dependency tracking
- EMF type converters and processors
- Status: Reference only - no modifications
- See org.apache.camel/README-WORKING-EXAMPLE.md
- Tutorials: Kafka | EMF | Simple | Configuration Guide
- org.apache.kafka.clients: Apache Kafka clients bundle for Kafka connectivity
- org.eclipse.fennec.kafka: Fennec Kafka integration with EObject support
KafkaEObjectConsumerandKafkaEObjectProducerfor EMF object streamingRobustKafkaConsumerandRobustKafkaProducerfor reliable messaging
- org.eclipse.fennec.demo.model: Demo EMF model (addressbook) for testing and examples
- cnf/: BND workspace configuration
build.bnd: Workspace build configurationcentral.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)
- 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
- 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
- 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
- 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
# Build all bundles
./gradlew build
# Run OSGi integration tests
./gradlew testOSGi
# Generate test coverage
./gradlew codeCoverageReport# Start the working Camel example
cd org.apache.camel
./gradlew resolve.camel
java -jar generated/camel.jar# 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 whiteboard integration tests
cd org.eclipse.fennec.camel.whiteboard.tests
./gradlew testOSGi
# Run Kafka integration tests
cd org.eclipse.fennec.kafka
./gradlew testOSGi- 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
- 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
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.
- CLAUDE.md: Complete development guide and architecture overview
- org.eclipse.fennec.camel.whiteboard/docs/: Detailed architecture documentation
DEVELOPMENT_DIARY.md: Implementation progress and decisionsCAMEL_WHITEBOARD_ARCHITECTURE.md: Whiteboard pattern detailsDYNAMIC_PIPELINE_REQUIREMENTS.md: Pipeline requirements and patterns
- org.apache.camel/Apache-Camel-EMF-Integration-Guide.md: Complete pipeline configuration examples
- org.apache.camel/CAMEL_WHITEBOARD_ARCHITECTURE.md: Whiteboard pattern architecture
- org.apache.camel/CONTEXT_STARTUP_ORDER.md: CamelContext startup sequence
- org.apache.camel/KAFKA-TUTORIAL.md: Step-by-step Kafka integration with Redpanda setup
- org.apache.camel/EMF-TUTORIAL.md: EMF object processing and route configuration
- org.apache.camel/SIMPLE-TUTORIAL.md: Timer-based routes with EMF object creation
- org.apache.camel/COMPONENT-CONFIGURATION-GUIDE.md: Critical @Component annotation and targeting requirements
- redpanda/README.md: Redpanda setup and management guide for Kafka development
- 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
Eclipse Public License 2.0
Copyright (c) 2012 - 2025 Data In Motion and others.
- Mark Hoffmann / m.hoffmann@data-in-motion.biz @ Data In Motion - initial API and implementation