Skip to content

Conversation

Suchismita-Deb
Copy link
Contributor

Added the new pattern Clean-Architecture.

Copy link

github-actions bot commented Mar 31, 2025

PR Summary

This PR introduces a Clean Architecture implementation for a shopping cart application. It includes entities (Product, Order, Cart), use cases (ShoppingCartService), interfaces and adapters (repositories and controllers), and in-memory implementations for testing purposes. The architecture promotes separation of concerns, testability, and maintainability.

Changes

File Summary
clean-architecture/README.md This file provides a comprehensive guide to the Clean Architecture pattern, including its intent, class diagram, real-world examples, and programmatic implementation in Java. It also covers benefits, trade-offs, and related design patterns.
clean-architecture/etc/cleanArchitectureUMLDiagram.PNG New file: UML diagram visualizing the Clean Architecture implementation.
clean-architecture/pom.xml The pom.xml file was updated to include the necessary dependencies and build configurations for the Clean Architecture module.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/App.java This is the main application class that demonstrates the Clean Architecture implementation by creating instances of controllers and use cases and executing a sample shopping cart scenario.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Cart.java Represents a shopping cart item, containing a Product and its quantity, and provides a method to calculate the totalPrice.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/CartController.java This controller class handles shopping cart operations such as adding, removing items, and calculating the total price using the ShoppingCartService.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/CartRepository.java Interface defining methods for managing cart data, including adding, removing, retrieving, calculating total, and clearing the cart.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryCartRepository.java In-memory implementation of the CartRepository interface, storing cart data in a HashMap for testing purposes.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryOrderRepository.java In-memory implementation of the OrderRepository interface, storing order data in a list for testing purposes.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryProductRepository.java In-memory implementation of the ProductRepository interface, storing product data in a HashMap for testing purposes.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Order.java Represents a completed order with an orderId, a list of Cart items, and a calculated totalPrice.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/OrderController.java This controller class handles order placement using the ShoppingCartService.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/OrderRepository.java Interface defining methods for managing order data, including saving orders.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Product.java Represents a product with an id, name, and price.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/ProductRepository.java Interface defining methods for retrieving products by ID.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/ShoppingCartService.java This service class handles the core business logic for shopping cart operations, including adding items, removing items, calculating totals, and checking out.
clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/package-info.java New file: Package-info file for the com.iluwatar.cleanarchitecture package.
clean-architecture/src/test/java/com/iluwatar/cleanarchitecture/AppTest.java This test class contains a test case to verify that the main application runs without throwing any exceptions.
clean-architecture/src/test/java/com/iluwatar/cleanarchitecture/CartControllerTest.java This test class contains test cases for the CartController, verifying the functionality of adding, removing, and calculating the total price of items in a shopping cart.
pom.xml Updated the pom.xml to include the new clean-architecture module.

autogenerated by presubmit.ai

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (2)
Files Processed (19)
  • clean-architecture/README.md (1 hunk)
  • clean-architecture/etc/cleanArchitectureUMLDiagram.PNG (0 hunks)
  • clean-architecture/img.png (0 hunks)
  • clean-architecture/pom.xml (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/App.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/Cart.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/CartController.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/CartRepository.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/InMemoryCartRepository.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/InMemoryOrderRepository.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/InMemoryProductRepository.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/Order.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/OrderController.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/OrderRepository.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/Product.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/ProductRepository.java (1 hunk)
  • clean-architecture/src/main/java/com.iluwatar.cleanArchitecture/ShoppingCartService.java (1 hunk)
  • clean-architecture/src/test/java/com/iluwatar/cleanArchitecture/AppTest.java (1 hunk)
  • clean-architecture/src/test/java/com/iluwatar/cleanArchitecture/CartControllerTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)

@Suchismita-Deb
Copy link
Contributor Author

Suchismita-Deb commented Mar 31, 2025

Hi @iluwatar Kindly give it a look.
In the master branch also the sonar issue prevails in the security part.
image

Copy link
Owner

@iluwatar iluwatar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add the new module to parent pom.xml, othewise it's not built by CI.

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (1)
Files Processed (20)
  • clean-architecture/README.md (1 hunk)
  • clean-architecture/etc/cleanArchitectureUMLDiagram.PNG (0 hunks)
  • clean-architecture/img.png (0 hunks)
  • clean-architecture/pom.xml (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/App.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Cart.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/CartController.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/CartRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryCartRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryOrderRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryProductRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Order.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/OrderController.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/OrderRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Product.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/ProductRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/ShoppingCartService.java (1 hunk)
  • clean-architecture/src/test/java/com/iluwatar/cleanarchitecture/AppTest.java (1 hunk)
  • clean-architecture/src/test/java/com/iluwatar/cleanarchitecture/CartControllerTest.java (1 hunk)
  • pom.xml (1 hunk)
Actionable Comments (0)
Skipped Comments (0)

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (1)
Files Processed (13)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/App.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Cart.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/CartController.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/CartRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryCartRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryOrderRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryProductRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Order.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/OrderController.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/OrderRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Product.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/ProductRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/ShoppingCartService.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (1)
Files Processed (14)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/App.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Cart.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/CartController.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/CartRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryCartRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryOrderRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryProductRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Order.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/OrderController.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/OrderRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Product.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/ProductRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/ShoppingCartService.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/package-info.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (1)
Files Processed (4)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Cart.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/InMemoryProductRepository.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/Order.java (1 hunk)
  • clean-architecture/src/main/java/com/iluwatar/cleanarchitecture/ShoppingCartService.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (1)
Files Processed (2)
  • clean-architecture/src/test/java/com/iluwatar/cleanarchitecture/AppTest.java (1 hunk)
  • clean-architecture/src/test/java/com/iluwatar/cleanarchitecture/CartControllerTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (1)
  • clean-architecture/src/test/java/com/iluwatar/cleanarchitecture/AppTest.java [15-19]

    enhancement: "Add more comprehensive assertions to AppTest."

@Suchismita-Deb
Copy link
Contributor Author

Hi @iluwatar kindly give it a look.

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (1)
Files Processed (0)
Actionable Comments (0)
Skipped Comments (0)

Copy link

sonarqubecloud bot commented Apr 2, 2025

Quality Gate Failed Quality Gate failed

Failed conditions
E Security Rating on New Code (required ≥ A)
E Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@Suchismita-Deb Suchismita-Deb requested a review from iluwatar April 2, 2025 16:45
@Suchismita-Deb
Copy link
Contributor Author

Hi @iluwatar kindly give it a look and review it as per your convenience. I have done the changes.

iluwatar
iluwatar previously approved these changes Apr 5, 2025
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (1)
  • 7521a8b: Merge branch 'master' into feature/3230
Files Processed (0)
Actionable Comments (0)
Skipped Comments (0)

@iluwatar iluwatar merged commit f7e717d into iluwatar:master Apr 5, 2025
1 of 2 checks passed
@iluwatar
Copy link
Owner

iluwatar commented Apr 5, 2025

Looks good! Thank you for the contribution 🎉

@all-contributors please add @Suchismita-Deb for code

Copy link
Contributor

@iluwatar

I've put up a pull request to add @Suchismita-Deb! 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants