* feat: allow a target to set offline assigned distribution set
Signed-off-by: Florian Bezannier <florian.bezannier@hotmail.fr>
* refacto: apply @avgustinmm recommendation
* docs: Mark update offline API as experimental
---------
Signed-off-by: Florian Bezannier <florian.bezannier@hotmail.fr>
Make use of RequestContextHolder which provides access to request / response out of the box
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for DDI API
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
* [#1383] Spring Boot 3 migration Step 2
Some of the steps:
1. Change spring version parent and versions in root pom.xml
2. update eclipselink versions
3. javax.annotation -> jakarta.annotation (*.java)
4. javax.persistence -> jakarta.persistence (*.java)
5. javax.servlet -> jakarta.servlet (*.java, pom.xml)
6. javax.validation:validation-api -> jakarta.validation:jakarta.validation-api (pom.xml)
7. javax.validation -> jakarta.validation (*.java)
8. javax.transaction -> jakarta.transaction (*.java)
9. replace spring-cloud-stream-binder-test (hawkbit-repository-test) with
```
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-test-binder</artifactId>
</dependency>
```
, TestSupportBinderAutoConfiguration.class }) -> })
@Import(TestChannelBinderConfiguration.class)
10. Set to Simple UI standard parent
11. requestMatchers to securityMatcher
12. @SpringBootApplication(scanBasePackages = "org.eclipse.hawkbit") (otherwise for instance flyway doesn't work - suffix is default ".sql", not H2.sql and don't differentiate dbs? strange is there a change?)
13. @NonEmpty for Long leads to validation exception - replaced with @NotNull
14. RSQLUtilityTest.correctRsqlBuildsPredicate - fixed - mock query builder add method
15. https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide#spring-mvc-and-webflux-url-matching-changes - aliases as targers/ return 404 - remove trailing slash
16. firewall tests (allowedHostNameWithNotAllowedHost) doesn't throw 'rejected exception' but return 400 instead (as probably is expected anyway)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com
* Fix tenant listing to do not mix with multitenancy
Tenant metadata is not multitenancy aware while depend on distribution set type
which is. Thus querying all tenant metadata (in non tenant context) sometimes leads to
resolution of distribution set type which is tenant scoped and leads to problems.
So, now listing tenant lists just their ids - not fill entities.
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
---------
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
* Introduce the AccessControlManager and use if for the TargetManagement and TargetTypeManagement.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Extend the access control manager by an API to serialize the current active context and persist it for scheduled background operations like auto-assignment.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Verify modification is permitted before performing automatic assignment
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Start with controlling distribution set type access. Perform some refactoring.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Support distribution set access control. Increase character limit to 512 chars for access control context. Refactor default implementations.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Introduce ContextRunner and define admin execution to check for duplicates before creating/updating entities.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Introduce Software Module, Module Type and Artifact control management. Fix tests.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Introduce access controlling test base. Add first test verifying the read operations for target types.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Finalize target type access controlling test.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Introduce ContextRunnerTest and TargetAccessControllingTest.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Introduce DistributionSetAccessControllingTest and fix missing access control specifications.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Extend test cases. Include only updatable targets into rollout.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Fix action visibility.
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
* Modifiable->Updatable & UPDATE check where needed
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
* ContextRunner superseded by ContextAware
+ ContextRunner remaned to ContextAware (move as a cenral entry/concept).
It now extends (and replace) TenantAware
+ SecurityContextTenantAware becomes ContextAware
+ Pluggable serialization mechanism
(default Java serialization of contexts) for SecurityContextTenantAware
(using SecurityContextSerializer)
+ AccessControl methods are added to ensure no entities fill be retrieved
just to call access control - so, if all permitted - no additional db
queries will be made
+ <repo type>AccessControl classes removed and replaced with
AccessControl <repo type> generics
+ AccessControlService removed - every AccessControl is registered and
overiden independently
+ access_control_context in DB increased to 4k (in order to support java
security context serialization)
+ needed adaptaion of implemtation and tests done
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
* Refactor SoftModules & DistSets
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
* Refactoring of the Repositories
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
* Repostiotory level permissions
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
* Improvements
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
* Simplification of AccessControl interface
* Simplifications & management package
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
* Implementation improvements
+ Artifact management & repo reviewed and tuned
+ Action(Status) management & repo reviewed and tuned
+ SoftwareModule(Type/Meta) management & repo reviewed and tuned
+ DistributionSet(Type/Tag/Meta) management(+Invalidation) & repo reviewed and tuned
+ Target(Tag/Type/Meta) management & repo reviewed and tuned
+ TargetQueryFilter management & repo reviewed and tuned
* Apply suggestions from code review
Suggestions accepted. Thanks @herdt-michael
Co-authored-by: Michael Herdt <michael.herdt@bosch.com>
* Apply suggestions from code review 2
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
---------
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
Co-authored-by: Michael Herdt <Michael.Herdt@bosch.com>
* Introduce request parameter to request download URLs when retrieving list of artifacts for a specific software module.
* Fix DDI integration test by aligning download path to new config
* Make use of mgmt representation mode in sw-module mgmt api
* Changed path
* refactor test names
* Introduce user consent flow
* Add permissions to confirmation management
* rename from consent to confirmation
* Reformat code. Remove unused imports. Change and add permission checks when configuring auto-confirmation.
* Do not include null values for DDI confirmation base endpoint
* fix confirmation required checkbox id
* Remove unused import. Fix consume/produce type of new API's.
* Change term processing to proceeding when activating user consent flow
* Align formatting and extend integration test cases for DMF and DDI.
* Extend DMF test cases to consider auto-confirmation
* Refactor action management to fix problem of handling action status updates on closed actions.
* remove unsupported validation
* use new confirmation api for DMF. Extend test cases.,
* Remove unnecessary fields.
* Extend API documentation for DDI and MGMT API.
* adapt ddi api docs adoc file
* Fixed the duplicate migration version for db files
* fix method to support confirmation
* Fixed PR comments
* Addressed PR comments
* Fixed after merge compilation issue
* Fixed after merge compilation issue
* Fix failing tests in MgmtRolloutResourceTest
* Fixed the permissions issue reflected by integration tests
* Added back the missing line of code lost during merge
* Fix the failing test on Jenkins
Signed-off-by: Stanislav Trailov <stanislav.trailov@bosch.io>
Signed-off-by: Dimitar Shterev <dimitar.shterev@bosch.io>
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
Signed-off-by: Shruthi Manavalli Ramanna <shruthimanavalli.ramanna@bosch-si.com>
Co-authored-by: Shruthi Manavalli Ramanna <shruthimanavalli.ramanna@bosch-si.com>
* Allow providing a custom code with an action status feedback to give more fine grained device specific details.
* Add ddi rest docs for new optional status code value.
* Provide new code value via mgmt api. Fix review findings.
* Fix failing tests
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
Co-authored-by: Stefan Behl <stefan.behl@bosch.io>
* reduce the number of created entities in tests
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch.io>
* fixed tests
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch.io>
* fixed review findings
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch.io>
* merged master
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch.io>
* adapted target count
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch.io>
* fixed review findings
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch.io>
* fixed RolloutManagementTest
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch.io>
* fixed flaky test ConcurrentDistributionSetInvalidationTest
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch.io>
* Fixed sonar warnings
- "Cognitive Complexity"
- "Do not use replaceAll when not using a regex"
- java:S5869 - Character classes in regular expressions should not contain the same character twice
- Improved bad name
- Typos
- reduced code duplications
- Replaced hand-made wait-utility with Awaitility
- Log messages
- Duplicate code
- Typos
- Removed Thread.sleep, instead relaxed check condition
- Removed use of deprecated API
- Removed use of deprecated API
- Added supress-warnings as I do not see a better way to write the tests
- Removed Thread.sleep / redundant functionality to Awaitility
- Fixed other warnings (use isZero, isEmpty, hasToString)
- Removed/Reduced duplicate code
- Added generics
- Fixed asserts
- removed: field.setAccessible(true) actually should not be needed for public static fields!
- Too long constructor passes arguments in wrong order - how surprisingly...
- Clean-up use of varargs arguments
- Fixed regex
- Fixed typos and other minor stuff
- Making public constructors protected in abstract classes
- Swapped expected and asserted argument
- volatile not enough for syncing threads
- volatile not enough for syncing threads
- out-commented code
- Made regex not-greedy, added tests for verification
- Avoid exposure of thread-local member var
Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io>
* Fixed Sonar warnings
* License header fix
Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io>
* License header fix#2
Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io>
* Fixing review findings
Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io>
* Fixing tests
- Fixed '&' usage in javadoc and typos
- Fixing some warnings
Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io>
* Introduce new events that are triggered when changes are made to the tenant configuration.
* Add new events to EventTypes
* Fix DeploymentManagement tests.
* Fix AmqpMessageDispatcherServiceIntegration tests.
* Fix DdiRootControlle test.
* Remove unused imports.
* TenantConfigUpdatedEvent should implement EntityUpdatedEvent
Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
-Update Spring Cloud to Hoxton.SR7
-Replace ResourceSupport by RepresentationModel (Spring Hateoas 1.0)
-Replace ControllerLinkBuilder by WebMvcLinkBuilder (Spring Hateoas 1.0)
-Move getId() from Identifiable to BaseEntity (Spring Hateoas 1.0)
-Remove hamcrest.Factory
-Use static Sort.by reference
-Place http security anyRequest().authenticated()
-Replace MockMvcRequestBuilders.fileUpload by MockMvcRequestBuilders.multipart
-Deprecate MEDIA_TYPE_CBOR_UTF8
-Replace MEDIA_TYPE_CBOR_UTF8 by MEDIA_TYPE_CBOR in tests
-Replace HAL_JSON_UTF8 by HAL_JSON in tests
-Replace APPLICATION_JSON_UTF8 by APPLICATION_JSON in tests
-Use org.mockito.junit.MockitoJUnitRunner
-Remove overridden dependency versions
-Removing not needed comments in pom.xml
-Downgrade flyway-core to be MySQL 5.6 compatible
-Add maven-site-plugin since it was removed with spring-boot 2.3
-Set servlet encoding properties
-Introducing Test that verifies the charset inside the content-type of a response
-Add @DirtiesContext to CorsTest and ContentTypeTest
-Add content-type mockmvc test with adapted mockmvc config
-Move encoding.force property to test class
-Switch expected and actual parameter values in content-type test
-Delete deprecated content-type test with TestRestTemplate
-Exclude JUnit5 from spring-boot-starter-test
-Upgrade allure-junit4 to 2.13.5
-Add aspectjweaver 1.9.6 to surefire test execution
-Add flyway-core version to property
-Use getRequiredLink() within MgmtBaseEntity.getId()
Signed-off-by: Ammar Bikic <ammar.bikic@bosch.io>
* Removed unused status from data config endpoint
* Removed unused paramter from test
* Formating fixes
* Fixed comments after review
Signed-off-by: Alexander Dobler <alexander.dobler3@bosch.io>
* Updating the schema for targetfilterquery and rollout
* Updating the weight validation logic and tests
* Make weight optional
* Fix existing multi assignment tests by adding weight, remove weight from TargetFilterQuery
* Add weight validation tests, fix tests
* Add mgmt api tests for assignment and getting action with weight
* Add management layer validation and tests for creating rollouts with weight
* Fix amqp test, add repo level validation to resource tests
* Add weight to rollout mgmt-api and tests
* Add weight to mgmt api target Filter create and update
* Add target filter auto assign weight. disable enforcement of setting a weight in multiassign mode
* Remove ignored tests, fix api doc
* Fix minor findings
* Fix findings
* Remove hardcoded min weight
* Add docu text, fix findings
* Fix api documentation
* Expose weight via DMF
* Expose actions according to weight via ddi
* Fix documentation
* Add method to get actions ordered by weight to deploymentManagement
* Updating the schema for targetfilterquery and rollout
* Updated the indentation
* Updated the helper class, fixed the randomUID in test factory
* Updated the class name with prefix JPA
* Adding the missing License for WeightValidationHelper class
* Adding documentation to the dmf api on weight
* Removed the merger markers
* Updated the class name
* Removed the redundant method
* Addressed final PR comments
* Updated the missing testcase with latest default weight value
* Reverting the default value of weight back to 1000 and updated tests
Signed-off-by: Shruthi Manavalli Ramanna <shruthimanavalli.ramanna@bosch-si.com>
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Add multiassignment to mgmt api target endpoint
* Remove single assignment ds to targets offline
* Fix tests
* Add quota for maxResultingActionsPerManualAssignment
* Fix assignment with same target or distribution set multiple times in one request
* Log UI error
* Add tests
* Enable single assignment requests with multiple DSs and types
* Remove redundant target to DS assignment methods
* Add tests, fix assignment
* Fix possible nullpointer during target assignment request
* Update api docu
* Clean up deployment management code
* Enforce MaxActions quota for offline assignment
* Fix review findings
* Rename property, add migration into
* Add builder for DeploymentRequest
* Change offline assignment method to accept an assignment list, like online assignment
* Fix PR findings
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* refactored code to use EventPublisherHolder for publishing application events where possible
Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com>
* fixed comment
Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com>
* Handle response of MethodArgumentNotValidException
* Readapt DdiDeploymentBaseTest after merge conflicts
* Handle Exceptions HttpMessageNotReadable and MethodArgumentNotValid in one ExceptionHandler method
Signed-off-by: Natalia Kislicyn <natalia.kislicyn@bosch-si.com>
* refactored DdiDeploymentBaseTest.java
* removed hardcoded variables, moved createArtifact() to TestDataFactory
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch-si.com>
* Increase target name to 128 and target controller id to 256
* Fix test failures by using constant NamedEntity.NAME_MAX_SIZE + 1
* Use constant NamedEntity.NAME_MAX_SIZE + 1 for mgmt-resource tests
* Add db migration scripts to increase the controllerId and name limit
* Fix review issues
* Use correct constant field for junit tests
* Change Hawkbit documentation url of application-<db>.properties
* Add new line at the end of db migration scripts
* Update assertion description
* Revert copyright years to its creator year
* Add DDI-, AMQP- and controller management-tests
Signed-off-by: Florian Ruschbaschan <Florian.Ruschbaschan@bosch-si.com>
* First draft of new assignment logic
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Enhancements of System Configuration view
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Drag&drop enhancements for multiple distribution set assignments
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Misc fixes
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* test that previous assignments are not canceled
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* add description and expected events to test
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* extend TenantConfigurationManagement by NullPointerException proof
getConfigurationValue method
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Hide "Required Migration Step" if Multi Assignments is enabled
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Make fields transient
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Add IDs for Required Migration Step elements
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Save work in progress
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Added new DMF message DmfMultiActionRequest
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* DMF enhancements to send out MultiActionRequest messages
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Minor changes
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Multi Assignment support for cancellations
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* fix permission problems and immutable lists
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* add message dispatcher tests for outgoing multiassignment messages, fix
old tests
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Implement Multi-Assignment support for rollout groups
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Minor changes
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Refactoring
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Register new deployment event with protobuff framework
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Allow same DS to be assigned multiple times
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix assignment with pending cancellations
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Reduce repository /DB calls
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Revert latest perf fix (causing a regression)
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* test if a rollout sends multiaction messages in multiassignment mode
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Minor changes
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Do not close new action if DS is already assigned (if multi-assign on)
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* add test that starts and finishes multiple rollouts in multiassignt mode
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* add javadoc to test method
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Prevent Multi-Assignments from being disabled via Repo Config UI
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Add link to Provisioning State Machine
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* test that Multiassignment can not be disabled via mgmt-api
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* refactor AmqpMessageHandlerService code
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Prevent Multi-Assignments feature from being disabled via Mgmt REST API
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* add license header, remove unused instance variables
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* fix tenantConfigurationManagement mock in test
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* return empty list instead of null
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* add ddi test for multiassignment, fix old test
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Prevent autoclose from being modified if Multi-Assignments is enabled
# WARNING: head commit changed in the meantime
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Add test for autoClose /multiAssign
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Javadoc improvements
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* change test method that waits for dmf messages to be dispatched
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* clean up code
Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
* Fix UI-related PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings, Sonar issues, and test failures
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix Sonar findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* Fix PR review findings
Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
* fixed typo in method name
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch-si.com>
* Added recover method to handle EntityAlreadyExistsException
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch-si.com>
* Added tests
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch-si.com>
* Apply suggestions from code review
Use thenThrow(Exception.class) instead of (new Exception())
Co-Authored-By: a-sayyed <ahmed.sayed@bosch-si.com>
* Apply suggestions from code review
use final modifier
Co-Authored-By: a-sayyed <ahmed.sayed@bosch-si.com>
* Adapted review findings
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch-si.com>
* Adapted review findings
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch-si.com>
* added logs for EntityAlreadyExistsException case
Signed-off-by: Ahmed Sayed <ahmed.sayed@bosch-si.com>