Developer Guide
Whether you're building custom extensions, contributing to the project, or integrating Dumont DEP into your CI/CD pipeline, this guide has everything you need.
Dumont DEP is fully open-source at github.com/openviglet/dumont. All contributions are welcome.
Tech Stack
| Layer | Technology |
|---|---|
| Backend | Java 21 · Spring Boot 4.0.3 |
| Message Queue | Apache Artemis (embedded) |
| Database | H2 (dev) · PostgreSQL (prod) |
| HTML Parsing | JSoup 1.22.1 |
| Text Extraction | Apache Tika 3.2.3 |
| Search Clients | Turing Java SDK · SolrJ · ES Client |
| Build | Apache Maven |
| CI/CD | GitHub Actions |
Setting Up Your Dev Environment
Prerequisites
- Java 21 (Temurin recommended)
- Maven 3.9+
- Git
- Turing ES running at
http://localhost:2700(for end-to-end testing)
Clone, Build, and Run
git clone https://github.com/openviglet/dumont.git
cd dumont
mvn clean install
cd connector/connector-app
mvn spring-boot:run
The application starts at http://localhost:30130.
Project Structure
dumont/
├── commons/ # Shared interfaces, models, utilities
├── aem-commons/ # AEM extension interfaces (published to Maven Central)
├── spring/ # Spring Boot configuration and JPA persistence
├── connector/
│ └── connector-app/ # Main pipeline — strategies, batch, queue, indexing plugins, API
├── web-crawler/
│ └── wc-plugin/ # Web Crawler connector plugin
├── db/
│ ├── db-commons/ # DB extension interface (published to Maven Central)
│ ├── db-app/ # Database connector (standalone CLI)
│ └── db-sample/ # Example custom DB extension
├── filesystem/
│ └── fs-connector/ # FileSystem connector (standalone CLI)
├── aem/
│ ├── aem-plugin/ # AEM connector plugin (loaded via -Dloader.path)
│ ├── aem-server/ # AEM server-side integration
│ └── aem-plugin-sample/ # Example custom AEM extensions (WKND site)
└── wordpress/ # WordPress PHP plugin
Extension Points
Dumont DEP provides extension points at multiple levels:
Connector-Level Extensions
| Extension | Guide | Maven Artifact |
|---|---|---|
| AEM extensions — custom attribute extractors, content processors, delta date logic | Extending the AEM Connector | com.viglet.dumont:aem-commons:2026.1.19 |
| Database extensions — custom row transformations during SQL import | Extending the Database Connector | com.viglet.dumont:db-commons:2026.1.19 |
Platform-Level Extensions
Creating a Custom Connector
Implement the DumConnectorPlugin interface:
public interface DumConnectorPlugin {
void crawl();
String getProviderName();
void indexAll(String source);
void indexById(String source, List<String> contentId);
}
Creating a Custom Indexing Plugin
Implement the DumIndexingPlugin interface:
public interface DumIndexingPlugin {
void index(TurSNJobItems turSNJobItems);
String getProviderName();
}
Register your plugin as a Spring @Component with @ConditionalOnProperty(name = "dumont.indexing.provider", havingValue = "your-provider").
Processing Strategy Architecture
Strategies are evaluated in priority order for each Job Item:
To add a custom strategy, implement the strategy interface and assign a priority between the existing ones.
REST API
| Endpoint | Description |
|---|---|
GET /api/v2/connector/status | Health check |
POST /api/v2/connector/indexing/ | Submit indexing jobs |
GET /api/v2/connector/monitoring/index/{source} | Monitor indexing progress |
GET /api/v2/connector/validate/{source} | Validate a content source |
For the full API surface, start the application and visit the Swagger UI.
Contributing
- Fork the openviglet/dumont repository
- Create a branch for your feature or fix:
git checkout -b feature/my-improvement - Commit with clear, descriptive messages
- Open a Pull Request — describe what you changed and why