Commit Graph
579 Commits
Author SHA1 Message Date
Mukul Howale a563344a35 feat: microservice messaging pattern (#3564)
* Initialize microservices-messaging Spring Boot project

Add initial project structure for microservices-messaging using Spring Boot. Includes Maven configuration with dependencies for Kafka, Lombok, and testing, as well as main application, test class, and application properties.

* Initialize microservices messaging pattern

1. Added initial project structure for demonstrating the microservices messaging pattern.
2. Introduced service stubs (OrderService, InventoryService, PaymentService, NotificationService), a Message and MessageBroker class, and a main App entry point.
3. Added README and logging configuration.

* Implement Message and MessageBroker classes

1. Added the Message class with unique ID, content, and timestamp fields, and a toString method.
2. Implemented the MessageBroker class to support topic-based publish-subscribe messaging, including subscriber management, message publishing, and logging.

* Implement messaging pattern for microservices

1. Added message handling logic to InventoryService, PaymentService, and NotificationService.
2. OrderService now publishes order events to a MessageBroker, and App demonstrates the messaging workflow. 3. Each service processes relevant order events and logs actions for demonstration purposes.

* Expand microservices messaging docs and add diagrams

1. Enhanced the README with detailed explanations, real-world examples, Java code samples, and references for the Microservices Messaging pattern.
2. Added flowchart and sequence diagram images to illustrate the pattern.

* Refactor to use Kafka for microservices messaging

1. Added Apache Kafka for asynchronous communication between services.
2. Added KafkaMessageProducer and KafkaMessageConsumer classes, updated service implementations and main application logic to use Kafka, and adjusted the Maven configuration to include Kafka and Jackson dependencies.
3. Updated and moved all classes to the com.iluwatar.messaging package, improved documentation, and updated diagrams to reflect the new architecture.

* Add unit tests and license headers to messaging module

1. Added comprehensive unit tests for App, InventoryService, KafkaMessageConsumer, KafkaMessageProducer, Message, NotificationService, OrderService, and PaymentService.
2. Added MIT license headers to all main source files and logback.xml.
3. Updated pom.xml to include JUnit Jupiter as a test dependency.

* Refactor and simplify service and Kafka test classes

1. Simplified unit tests for InventoryService, NotificationService, and PaymentService by removing null content tests and adding instantiation checks.
2. Refactored KafkaMessageConsumerTest and KafkaMessageProducerTest to avoid requiring a real Kafka instance, focusing on class structure and method existence instead of integration behavior.

* Add microservices-messaging module and run scripts

Introduce the microservices-messaging module and register it in the root pom.xml. Add docker-compose.yml to run a local Kafka (confluentinc/cp-kafka) with a healthcheck, plus run-app.ps1 and run-app.sh helper scripts that start Kafka if needed and then launch the application. Update the module README with usage instructions. Also remove a duplicated junit-jupiter-api test dependency from the module pom to rely on project defaults.

* microservices-messaging: code style and Lombok

Add Lombok as a provided dependency and apply formatting/refactoring across the microservices-messaging module. Changes include import reordering, Javadoc and logging formatting, consistent lambda/try/catch indentation, small Kafka consumer/producer refinements (Duration/Properties usage and callback formatting), Message class tweaks (@Getter, JSON ctor and toString formatting) and EOF/newline fixes. Unit tests were also reformatted for consistency. These are non-functional style and readability improvements; no behavior changes intended.

* Make Kafka producer/consumer testable

Refactor KafkaMessageProducer and KafkaMessageConsumer to depend on the Producer/Consumer interfaces and add constructors that accept mockable instances. Extract default producer/consumer creation into factory methods so tests can inject MockProducer/MockConsumer. Update tests across the microservices-messaging module to use MockProducer/MockConsumer, add more meaningful assertions, error/interrupt handling tests, and simplify AppTest. These changes improve unit testability and remove the need for a running Kafka instance while preserving runtime behavior.

* Format test Javadoc and reorder imports

Normalize Javadoc formatting and reorder static JUnit imports for consistency in messaging tests. Converted multi-line test Javadocs to single-line comments and adjusted import ordering in the following files:

- microservices-messaging/src/test/java/com/iluwatar/messaging/KafkaMessageConsumerTest.java
- microservices-messaging/src/test/java/com/iluwatar/messaging/KafkaMessageProducerTest.java
- microservices-messaging/src/test/java/com/iluwatar/messaging/OrderServiceTest.java

No functional changes.

* Add MIT headers and exclude .ps1 from license checks

Add MIT license headers to microservices-messaging/docker-compose.yml, run-app.ps1 and run-app.sh to ensure license text is present in these scripts. Update root pom.xml to exclude PowerShell (*.ps1) files from the license plugin checks so those files are not processed by the license rule.

* Add Kafka docker service to CI workflows

Bring up Kafka for tests in CI and PR workflows. Adds steps to run docker compose for microservices-messaging, poll Kafka readiness (up to 20 retries), and always tear down with docker compose down. Enables Maven tests that depend on Kafka. Affects .github/workflows/maven-ci.yml and .github/workflows/maven-pr-builder.yml.

* Use kafka-topics instead of kafka-topics.sh

Replace calls to kafka-topics.sh with kafka-topics in CI workflows and the Docker Compose healthcheck. Updated .github/workflows/maven-ci.yml, .github/workflows/maven-pr-builder.yml, and microservices-messaging/docker-compose.yml to use the kafka-topics binary for readiness checks and healthchecks. This prevents failures on images that expose the kafka-topics command without the .sh wrapper.

* Use docker compose --wait for Kafka startup

Replace the custom bash readiness loop with `docker compose ... up -d --wait` in CI and PR workflows. This simplifies startup of the microservices-messaging Kafka service and removes the manual retry/polling logic. Files changed: .github/workflows/maven-ci.yml, .github/workflows/maven-pr-builder.yml. Note: requires a Docker Compose version that supports the `--wait` flag.

* Reformat tests for readability

Reformatted KafkaMessageConsumerTest and PaymentServiceTest for readability and consistent formatting: reflowed constructor invocation, expanded anonymous HashMap and schedulePollTask lambda blocks, and aligned assertDoesNotThrow parameters. These are pure style changes with no behavioral modifications.

* Remove Kafka Docker Compose steps from CI

Removed the Start/Stop Kafka Docker Service steps that ran docker compose for microservices-messaging from .github/workflows/maven-ci.yml and .github/workflows/maven-pr-builder.yml. Workflows no longer start or tear down the Kafka docker-compose service during CI/PR runs; other steps (xvfb install, Maven build, Codecov upload, Sonar cache) remain unchanged.

* Bump google-java-format to 1.27.0; tidy tests

Update pom.xml to use google-java-format 1.27.0 (was 1.17.0). Make minor formatting cleanups in KafkaMessageConsumerTest and PaymentServiceTest by collapsing multi-line calls into single lines. No functional changes.

* Downgrade Google Java Format to 1.17.0

Update Spotless googleJavaFormat version in root pom.xml from 1.27.0 to 1.17.0

* Improve Kafka producer and consumer tests

Enhance microservices-messaging tests: add consumer tests to verify run() exits immediately when stopped and gracefully handles a WakeupException (ensuring the MockConsumer is closed). Update producer error test to avoid try-with-resources, assert publish behavior and history, trigger failingProducer.errorNext(...) before closing to cover the error callback branch, then close and assert the mock producer is closed.

* Refactor App.run and add messaging tests

Extract App.run(...) and introduce a package-private sleepMs field to control sleep durations so the demo can be exercised programmatically and sped up for tests. Main now delegates to run; consumers are started there. Tests updated: AppTest sets sleepMs to 0 and adds testRunWithMockObjects using MockProducer/MockConsumer to exercise run without a Kafka broker; KafkaMessageProducerTest adds a null-message publish test; minor formatting fix in KafkaMessageConsumerTest. These changes improve testability and coverage for the microservices-messaging module.
2026-08-16 22:12:29 +03:00
Anvesh Srivastava 1673930bc0 feat: Add Backends For Frontends (BFF) pattern (#300) (#3543)
* Add Backends For Frontends pattern (#300)

Implements the BFF pattern with two client-specific gateways
(MobileBff, DesktopBff) aggregating shared downstream services
(AuthService, CartService, OrderService, SupplierService) into
client-tailored response shapes.

Closes #300

* Rename SupplierService lookup key to productName for clarity

The service is looked up by product name throughout the codebase, not
an actual product ID as the previous naming implied.

* Address review feedback: remove unnecessary compact constructors, add InMemory* service tests
2026-08-16 21:56:51 +03:00
BAGHDAD Mohamed 5d6ff2f0c4 feat: add rule engine design pattern (#3548)
Add an educational rule-engine module demonstrating the Rule Engine
pattern. Each business rule is an independent object exposing evaluate
(decision) and execute (action); a RuleEngine evaluates a collection of
rules against an immutable loan-application context in insertion order,
runs the passing rules, and reports every passed and failed rule via an
immutable RuleEngineResult. Includes three concrete rules, an App demo,
unit tests, README, and class diagram.
2026-08-16 21:47:18 +03:00
dependabot[bot] f5bdf688f1 build(deps): bump com.diffplug.spotless:spotless-maven-plugin (#3540)
Bumps [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) from 2.44.2 to 3.8.0.
- [Release notes](https://github.com/diffplug/spotless/releases)
- [Changelog](https://github.com/diffplug/spotless/blob/main/CHANGES.md)
- [Commits](https://github.com/diffplug/spotless/compare/maven/2.44.2...maven/3.8.0)

---
updated-dependencies:
- dependency-name: com.diffplug.spotless:spotless-maven-plugin
  dependency-version: 3.8.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-16 21:37:59 +03:00
PriyanshuandIlkka Seppälä 7e0ddb01cd feat: Implement Fallback design pattern #2846 (#3538)
* feat: implement Fallback design pattern with circuit breaker and service monitoring

* docs: add README for Fallback design pattern implementation

---------

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
2026-08-16 21:31:20 +03:00
Hattori Henzo 688095a4c7 feat: Add the implementation of Onion-Architecture (#3532)
* Add the implementation of Onion-Architecture

* Execute maven command: mvn spotless:apply
2026-08-16 20:30:42 +03:00
dependabot[bot] 448c8b5d21 build(deps): bump org.slf4j:slf4j-api from 2.0.9 to 2.0.18 (#3525)
Bumps org.slf4j:slf4j-api from 2.0.9 to 2.0.18.

---
updated-dependencies:
- dependency-name: org.slf4j:slf4j-api
  dependency-version: 2.0.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-04 21:21:10 +03:00
dependabot[bot] 9c5d703dda build(deps): bump ch.qos.logback:logback-classic from 1.5.18 to 1.5.34 (#3517)
Bumps [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) from 1.5.18 to 1.5.34.
- [Release notes](https://github.com/qos-ch/logback/releases)
- [Commits](https://github.com/qos-ch/logback/compare/v_1.5.18...v_1.5.34)

---
updated-dependencies:
- dependency-name: ch.qos.logback:logback-classic
  dependency-version: 1.5.34
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-10 18:56:32 +03:00
OrbisAI Security 13cde46f2e fix: CVE-2025-22235 security vulnerability (#3510)
Automated dependency upgrade by OrbisAI Security
2026-06-07 10:11:45 +03:00
김정모andClaude Sonnet 4.6 7473378ca2 feat: implement Immutable pattern (Fixes #3448) (#3509)
* feat: implement Immutable pattern #3448

Add immutable/ module with ImmutableUser (final class, defensive copy,
withAge wither method), App demo, JUnit 5 tests, PlantUML diagram, and
README following project conventions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add withName and withRoles wither methods to ImmutableUser #3448

Every field now has a corresponding wither for consistency.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: add junit-jupiter-api dependency to immutable module #3448

Required for @Test annotations and assert methods in test code.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 22:05:42 +03:00
CMD137 e8595393d6 feat: Add Thread-Specific Storage design pattern (#3422)
* Add Thread-Specific Storage design pattern

* fixed:pom.xml
Run 'mvn spotless:apply' to fix these violations.

* fix: address Sonar security hotspots for Random usage and e.printStackTrace()

* fixed:
Run 'mvn spotless:apply'(remove unused import)

* fixed:
Refactor Thread-Specific Storage pattern implementation to address Sonar issues: remove unnecessary instantiation, add private constructor, use diamond operator, and update tests.

* fixed:
update uml and README.md

* Trigger CI rerun
2026-06-01 21:11:47 +03:00
Aditya Kumawat 318130c486 #2673: feat: Microservice pattern: Polling publisher #3243 (#3292)
* added new microservice pattern polling-publisher, created folder structure, README.md & App.java

* added two service polling service & publisher service to handle two different operation & prepared initial skeleton

* polling-publisher service implementation

* fixed checkstyle errors

* subscriber-service implementation

* added entry point for subscriber service & unit test-case

* added unit test-case for DataSourceService class

* resolved dependency & structured classes

* implemented Data repository, DataSource Service & added unittest-case & implemented polling-service microservice

* implemented subscriber microservice using kafkaConsumer

* Fixed Kafka bug & added a controller to send message using API

* Fixed subscriber-service & updated pom.xml

* Fixed topic name

* added new listener for other topic

* updated all README.md

* added description on both application.yaml file

* added scope before class definition in Test classes & removed duplicate dependency from pom.xml & added required one

* added polling-publisher module in pom.xml

* Updated README.md file based on new template

* improved the README.md file & fixed it's format

* deleted unnecessary README.md files

* fixed the printing statements & used log function

* used logger to print statement

* addressed review comment: removed unnecessary dependency

* addressed review comment
2026-05-31 17:54:58 +03:00
Soham KambleandIlkka Seppälä 265e3d0bda feat: Rate Limiting Pattern #2973 (#3291)
* need to fix one test case shouldGraduallyIncreaseLimitWhenHealthy failing for AdaptiveRateLimiter.java

* Added Class Diagram and Flow Diagrams for Adaptive, Fixed Window and Token Bucket Rate Limiter

* Updated README.md. All test case passed. Updated with Google Java Guidelines

* Updated parent pom #2973

* Updated parent pom #2973

* fixed shouldResetCounterAfterWindow() test #2973

* formatting fixed #2973

* added test coverage for app.java and fixed random to be thread safe #2973

* added test coverage for app.java and fixed random to be thread safe #2973

* added test coverage for app.java and fixed random to be thread safe #2973

* added test coverage for app.java and fixed random to be thread safe #2973

* added test coverage for app.java and fixed random to be thread safe #2973

* added test coverage for app.java and fixed random to be thread safe #2973

* added test coverage for app.java and fixed random to be thread safe #2973

* fixed random to be thread safe #2973

* fixed random to be thread safe #2973

* fixed random to be thread safe #2973

* fixed spacing in pom.xml #2973

---------

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
2026-02-22 20:15:11 +02:00
e5LAandIlkka Seppälä a3fcc63167 feat: Implement View Helper pattern (#3278)
* #1263 - creating new module for view-helper

* #1263 - creating Product and ProductViewModel

* #1263 - creating interfaces for View and ViewHelper

* #1263 - creating ProductViewHelper and its test

* #1263 - creating Console View for Product

* #1263 - creating ProductController

* #1263 - creating main App and its test

* #1263 - adding license header

* #1263 - keeping module in alphabetical order

* #1263 - creating README and diagrams

* #1263 apply spotless

---------

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
2026-02-08 21:44:17 +02:00
Thanh Nguyen Duc f92e6829c3 feat: Implement DAO Factory pattern (#3282)
* feat: implement dao factory

* feat: done implement dao factory

* test: Add unit test dao-factory

* doc: add document for dao-factory

* fix: h2 inmemory database to pass CI

* fix: unit test pipeline

* add license

* fix SonarQube

* add pom.xml

* fix: throw exception + refactor
2026-02-08 21:11:47 +02:00
Naman Srivastava 812e4cd6a2 feat: Microservices pattern : Self-Registration (#3245)
* Services and information

* README.md updated

* unit tests added for controllers

* pom.xml, clean up, java version update and slf4j logging added

* pom files updated

* Removed children maven wrappers

* Microservice-self-registration added to pom file

* POM file updated for self-registration

* pom file updated

* Update pom.xml

correction to mudule name

* SonarQube comments addressed

* sonarqube comments on coverage addressed

* Code coverage for custom health checks

* changes for unit tests

* changes for unit tests

* changes to for code coverage improvement
2026-02-08 20:40:07 +02:00
dependabot[bot] 3ba2560e09 build(deps-dev): bump org.htmlunit:htmlunit from 4.7.0 to 4.17.0 (#3334)
Bumps [org.htmlunit:htmlunit](https://github.com/HtmlUnit/htmlunit) from 4.7.0 to 4.17.0.
- [Release notes](https://github.com/HtmlUnit/htmlunit/releases)
- [Commits](https://github.com/HtmlUnit/htmlunit/compare/4.7.0...4.17.0)

---
updated-dependencies:
- dependency-name: org.htmlunit:htmlunit
  dependency-version: 4.17.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-08 20:37:15 +02:00
Soumik Sarker 98d3601b1e docs: Formatted spacing and updated documentation (#3290)
* Refactored redundant spacing in pom.xml

* Updated documentation of remove subscriber in publish-subscribe model
2026-01-17 21:28:23 +02:00
yoobin_mion 8529017e02 feat: Implement Thread-Pool Executor pattern (#3271)
- Add implementation of Thread-Pool Executor pattern using hotel front desk example
- Include unit tests
- Create detailed README with pattern explanation and examples
- Add Java source code with appropriate Javadoc comments

Closes #3226
2025-05-15 21:53:37 +03:00
dependabot[bot] 7d2e6262cc build(deps): bump com.mycila:license-maven-plugin from 4.6 to 5.0.0 (#3268)
Bumps [com.mycila:license-maven-plugin](https://github.com/mathieucarbou/license-maven-plugin) from 4.6 to 5.0.0.
- [Release notes](https://github.com/mathieucarbou/license-maven-plugin/releases)
- [Commits](https://github.com/mathieucarbou/license-maven-plugin/compare/license-maven-plugin-4.6...v5.0.0)

---
updated-dependencies:
- dependency-name: com.mycila:license-maven-plugin
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 10:01:53 +03:00
dependabot[bot] ad6bdf802d build(deps): bump org.sonarsource.scanner.maven:sonar-maven-plugin (#3261)
Bumps [org.sonarsource.scanner.maven:sonar-maven-plugin](https://github.com/SonarSource/sonar-scanner-maven) from 5.0.0.4389 to 5.1.0.4751.
- [Release notes](https://github.com/SonarSource/sonar-scanner-maven/releases)
- [Commits](https://github.com/SonarSource/sonar-scanner-maven/compare/5.0.0.4389...5.1.0.4751)

---
updated-dependencies:
- dependency-name: org.sonarsource.scanner.maven:sonar-maven-plugin
  dependency-version: 5.1.0.4751
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 21:52:25 +03:00
e5LA 55bef7ca39 chore: removed duplicated dependency (#3258) 2025-04-22 21:44:59 +03:00
ssrijan-007-sys fe522fd70d feat: Implement Actor Model pattern
* feat: Implement Actor Model pattern #3232

* feat: Implement Actor Model pattern #3232

* feat: update Actor Model implementation with multi-actor logic #3251

* feat: update Actor Model implementation with multi-actor logic and loose coupling  #3251

* test: add unit test for actor model #3251

* test: add test for App.java to increase coverage

* docs: add complete README for Actor Model pattern also implemented changes #3251
2025-04-22 21:29:58 +03:00
dependabot[bot] 0f37b4ee7f build(deps): bump com.diffplug.spotless:spotless-maven-plugin (#3254)
Bumps [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) from 2.44.3 to 2.44.4.
- [Release notes](https://github.com/diffplug/spotless/releases)
- [Changelog](https://github.com/diffplug/spotless/blob/main/CHANGES.md)
- [Commits](https://github.com/diffplug/spotless/compare/maven/2.44.3...maven/2.44.4)

---
updated-dependencies:
- dependency-name: com.diffplug.spotless:spotless-maven-plugin
  dependency-version: 2.44.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-15 18:10:28 +03:00
dependabot[bot] b95bf243e6 build(deps): bump org.jacoco:jacoco-maven-plugin from 0.8.12 to 0.8.13 (#3252)
Bumps [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.12 to 0.8.13.
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.12...v0.8.13)

---
updated-dependencies:
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-version: 0.8.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-15 18:09:22 +03:00
Sanura Hettiarachchi 0b83b6dfd1 feat: Adding backpressure design pattern #3233 (#3249)
* Initial commit backpressure

temp

* Adding backpressure pattern #3233

* Fix test case #3233

* Fix formatting #3233

* Changes after review #3233

* Fix sonar error in leaderfollowers module #3233
2025-04-12 08:46:49 +03:00
dependabot[bot] 8d139234f3 build(deps): bump org.projectlombok:lombok from 1.18.36 to 1.18.38 (#3247)
Bumps [org.projectlombok:lombok](https://github.com/projectlombok/lombok) from 1.18.36 to 1.18.38.
- [Changelog](https://github.com/projectlombok/lombok/blob/master/doc/changelog.markdown)
- [Commits](https://github.com/projectlombok/lombok/compare/v1.18.36...v1.18.38)

---
updated-dependencies:
- dependency-name: org.projectlombok:lombok
  dependency-version: 1.18.38
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-08 20:09:47 +03:00
Ilkka Seppälä ee699af6ef deps: refactor dependencies 2025-04-05 09:45:53 +03:00
Suchismita DebandIlkka Seppälä f7e717dcad feat: Clean Architecture (#3235)
* #3230 - Clean Architecture.

* #3230 - Clean Architecture.

* #3230 - Clean Architecture.

* #3230 - Clean Architecture.

* #3230 - Clean Architecture Sonar.

* #3230 - Clean Architecture Sonar.

* #3230 - Clean Architecture Sonar.

* #3230 - Clean Architecture Sonar.

---------

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
2025-04-05 09:40:55 +03:00
Ilkka Seppälä b35592ab4a deps: move junit-jupiter-migrationsupport to parent pom.xml 2025-04-01 20:55:42 +03:00
Sanura HettiarachchiandSanura Hettiarachchi 418557129b feat: add publish-subscribe design pattern (#2898) (#3223)
* feat: add publisher-subscriber design pattern (#2898)

* fix: check styles on publisher-subscriber design pattern (#2898)

* fix: check styles on publisher-subscriber design pattern (#2898)

* fix: check styles on publisher-subscriber design pattern (#2898)

* fix: improve coverage on publisher-subscriber design pattern (#2898)

* fix: fix dependancy on publisher-subscriber design pattern (#2898)

* fix: fix documentation on publisher-subscriber design pattern (#2898)

* fix: apply spotless on publisher-subscriber design pattern (#2898)

* fix: changes after review on publisher-subscriber design pattern (#2898)

* fix: changes after review on publisher-subscriber design pattern (#2898)

* fix: fix sonar on publisher-subscriber design pattern (#2898)

* fix: fix sonar on publisher-subscriber design pattern (#2898)

---------

Co-authored-by: Sanura Hettiarachchi <sanura.hettiarachchi@tipico.com>
2025-03-30 20:24:15 +03:00
Ilkka Seppälä 0ca162a55c deps: Refactor dependencies (#3224)
* remove spring dep
move junit, logging, mockito under dep mgmt

* upgrade anti-corruption-layer deps

* async method invocation

* balking, bloc

* bridge to bytecode

* caching

* callback - cqrs

* component - health check

* hexagonal - metadata mapping

* rest of the patterns

* remove checkstyle, take spotless into use
2025-03-29 19:34:27 +02:00
Ilkka Seppälä 5a371a4e76 fix: remove urm-maven-plugin from the build 2025-03-25 18:49:47 +02:00
Ilkka Seppälä a6c7d3d41a feat: Java 21 update (#3213)
* update pom.xml and github actions scripts

* disable failing tests, for now
2025-03-25 18:28:33 +02:00
John Klint adf5b62753 feat: Add Service Stub Pattern using Sentiment Analysis example (#3215)
* Add Service Stub Pattern using Sentiment Analysis example

* Fix Checkstyle issues

* Suppress Sonar warning for Random usage in RealSentimentAnalysisServer
2025-03-23 07:37:35 +02:00
Ilkka Seppälä dd8b9b377a fix: Set locale in tests to be able to run locally. Remove logging dependency fixed versions in parent pom.xml to prevent conflicts with spring boot. Update license headers. Update urm diagrams. 2025-03-18 15:56:06 +02:00
dependabot[bot] e24739c541 build(deps): bump org.slf4j:slf4j-api from 2.0.16 to 2.0.17 (#3198)
Bumps org.slf4j:slf4j-api from 2.0.16 to 2.0.17.

---
updated-dependencies:
- dependency-name: org.slf4j:slf4j-api
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-04 20:42:57 +02:00
Harshita Vidapanakal 6785b53b02 feat: Added Map Reduce Design Pattern (#3184)
* MapReduce design pattern added

* Updated README.md

* added module to parent pom
2025-02-22 20:08:05 +02:00
dependabot[bot] be0815680b build(deps): bump org.apache.maven.plugins:maven-surefire-plugin (#3085)
Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.1...surefire-3.5.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-16 08:54:53 +02:00
Mohaned AtefandIlkka Seppälä a25b6a003d feat: Implemented Monolithic Architecture according to the guidelines provided by issue #2664 (#3111)
* added a pom.xml file for the monolithic structure, set up MVC file structure, and added basic model files using H2 database since its light and efficient

* added a pom.xml file for the monolithic structure, set up MVC file structure, and added basic model files using H2 database since its light and efficient

* Added "controllers" and repository classes to communicate with database to maintain code cleanliness

* added application.properties file for springboot, added controller classes and used the CLI main class from the previous submission and enhanced upon it

* fixed checkstyle comments

* fixed testing class

* automatically generated puml

* Readme File

Added Detailed Readme File in the md format

* attempting to fix some debugging issues

added more test cases, and tried to fix pom.xml

* dropped change

* another attempted fix

* added more test cases

* Fixes

Renamed the main module/directory. Added more content to the readme.md file. fixed the orElseThrow statements

Fixes

Renamed the main module/directory. Added more content to the readme.md file. fixed the orElseThrow statements

* fixed naming and readme file

---------

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
2025-02-15 09:53:58 +02:00
darkhyper24 21115f4568 feat: implemented the bloC design pattern issue #2374 (#3128)
* added bloC design pattern

* added bloC design pattern

* added Readme file

* fixed checkstyle warnings

* added tests for the ui

* fixed a test in MainTest file

* separating ui from main file and adding more tests

* added pom.xml plugins and properties and fixed readme.md

* fixed renaming problem and added context to main

* chsnged state class to record

* syncing changes for conflicts

* Revert "fixed conflicts"

* restored files

* renamed readme file and abstracted pom file
2025-01-16 16:56:53 +02:00
Shahd HossamandIlkka Seppälä 8cb7c9ada6 feat: Implementation of session facade design pattern #1278 (#3121)
* implementation of session facade #1278

* minor change

* readme updated

* addressed the comments regarding changing lists to maps and adding maven assembly plugin

---------

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
2025-01-11 17:45:01 +02:00
Tarun VishwakarmaandIlkka Seppälä ab59dfe770 feat: Added Microservices UI Client side composition #2698 (#3062)
* Added Microservices client side ui composition to the repo.
Added ClientSideCompositionTest, ApiGateway, ClientSideIntegrator, FrontendComponent, CartFrontend, ProductFrontend, updated pom.xml, ReadME.md.

* Improved some checkstyle changes.

* Added Random variable to re-use the random instead of creating it everytime in FrontendComponent.

* changed the Pom.xml and upadted the ReadME.md

* Changes in the README.md File as per requirement, name of the file changed from ReadME.md to README.md

---------

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
2025-01-06 20:55:08 +02:00
Malak ElbannaandIlkka Seppälä 5ba45701bf feat: Implemented the Template View pattern (#1320) (#3110)
* pattern:implemented the Template View pattern (#1320)

* fix:added links in README and updated package name (#1320)

---------

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
2025-01-06 19:24:40 +02:00
Ahmed-Taha-981andIlkka Seppälä cdb78d7fb6 feat: Money pattern (#3109)
* Money pattern

the implementation of the money patter and the tests along with the read me file

* Update money/README.md

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>

* added App file anf modified README file and pom.xml file

* modified README and pom.xml

* added comments

* Added a test for App.java

---------

Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
2025-01-06 19:19:22 +02:00
HabibaMekay c5a6862887 feat: Implemented the Table Inheritance pattern (#3105)
* sample classes and tests

* sample classes and tests

* read me addition

* fix violations

* fix quality (coverage)

* fix quality (coverage) #2

* resolved comments
2025-01-06 19:03:27 +02:00
dependabot[bot] adbddcb518 build(deps-dev): bump org.htmlunit:htmlunit from 4.5.0 to 4.7.0 (#3104)
Bumps [org.htmlunit:htmlunit](https://github.com/HtmlUnit/htmlunit) from 4.5.0 to 4.7.0.
- [Release notes](https://github.com/HtmlUnit/htmlunit/releases)
- [Commits](https://github.com/HtmlUnit/htmlunit/compare/4.5.0...4.7.0)

---
updated-dependencies:
- dependency-name: org.htmlunit:htmlunit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-07 20:34:41 +02:00
dependabot[bot] b383d2ec1a build(deps): bump org.sonarsource.scanner.maven:sonar-maven-plugin (#3097)
Bumps [org.sonarsource.scanner.maven:sonar-maven-plugin](https://github.com/SonarSource/sonar-scanner-maven) from 4.0.0.4121 to 5.0.0.4389.
- [Release notes](https://github.com/SonarSource/sonar-scanner-maven/releases)
- [Commits](https://github.com/SonarSource/sonar-scanner-maven/compare/4.0.0.4121...5.0.0.4389)

---
updated-dependencies:
- dependency-name: org.sonarsource.scanner.maven:sonar-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-01 18:14:59 +02:00
Patrick Kleindienst 97de002348 fix: Executable JAR: Include project version in final name (#3090) 2024-11-15 21:04:25 +02:00
David M. 2a2c5605bc feat: Idempotent Consumer Microservice Pattern #2683 (#3082)
* added idempotent consumer pattern

* updated doc

* fixed bug in RequestService

* add test converage

* Add test converage to state machine

* renamed module and added code example
2024-11-11 17:59:35 +02:00