Overview
The Common module provides fundamental building blocks and utilities used throughout the Archetypy Oprogramowania framework. It contains reusable patterns for error handling, versioning, event publishing, and common operations.Key Components
Result Pattern
TheResult<F, S> type provides a functional approach to error handling, representing either a success or failure state.
Result Operations
Mapping Operations
Mapping Operations
Transform success or failure values:
FlatMap for Chaining
FlatMap for Chaining
Chain operations that may fail:
Composite Results
Composite Results
Accumulate multiple results with fail-fast semantics:
Version
Simple value object for optimistic locking and versioning:Version.java
Event Publishing
Simple event publisher interface for domain events:EventPublisher Interface
Utility Classes
Preconditions
Argument validation utilities:
Pair
Generic pair container:
StringUtils
String manipulation utilities for common operations.
CollectionTransformations
Functional operations on collections.
Design Patterns
The Common module demonstrates several important patterns:
- Result Type: Functional error handling without exceptions
- Sealed Interfaces: Type-safe sum types (Java 17+)
- Value Objects: Immutable data containers (records)
- Event-Driven Architecture: Decoupled communication via events
Testing
The module includes comprehensive test coverage:Test Example
Dependencies
- Java 21: Uses modern Java features (records, sealed interfaces)
- JUnit 5: Testing framework
- No runtime dependencies: Pure Java implementation
Best Practices
- Use Result instead of exceptions for expected error cases
- Version all aggregates for optimistic locking
- Publish domain events for cross-module communication
- Validate early using Preconditions at boundaries
Related Modules
- All other modules depend on Common
- Provides foundation for Quantity value objects
- Event system used in Accounting and Ordering
