The annotation that should be used for marking transaction execution

This is a method level annotation aimed to mark the entry point of a
transaction. Every transaction can set its isolation and propagation setting
individually.

This is starting and center point of transaction implementation.

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add the transaction API as per the proposed design spec

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add SPI for implementation of transaction

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Implement the in-memory cache to retrieve data for isolated and non-isolated lookup

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Implement transaction manager

In process implement transaction and also enhance its API to allow transaction completion
observer. It is required for notifying the manager of a transaction completion. In process of
this implementation TransactionService SPI which will integration the transaction API with
the Common DAO API.

Also enhance the cache memory SPI to allow lookup of all transaction memories related to
a particular transaction.

TransactionImpl still lacks test case and it will be the next thing to do. After that we will
implement the transaction service commit, rollback and dao integration.

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Implement test cases for transaction implementation

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add clean up of cache memory on transaction completion

The transactional and global cache is cleared when a transaction is cleared
This will ensure that memory is optimized and cache contains only objects
in transaction.

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add check for transactional cache empty as well

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Make non-isolation lookup support configurable

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Refactor test case code for cache variable lookup via reflection

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Fix write time locking to non-isolated store

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Implement transaction common dao that'll be used by Client Implementations

It basically creates and uses new APIs in transaction service and delegates
to them for caching in transactional cache. Also fix the typo in cache API.

Also enhance Transaction API to expose whether the transaction is isolated
or not. At the same time also create transaction manager API with isolated
transaction flag during transaction creation.

The transaction dao implementation is unit tested; so the next step would
be to implement the transaction service APIs missing still.

Signed-off-by: Imran M Yousuf <imyousuf@smartitengineering.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add checking for domains been deleted within a transaction

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Implement transaction service in its rudimentary form

Unit tests added for all operations other than commit and hard-rollback.
In process correct typo of createTransactionKey.

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add test for hard rollback

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add test case for commit

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add test for declarative transaction management

Next step is to implement method interceptor for the new
@Transaction annotation and handle code generation for DI
to correctly generate necessary bindings.

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add @Transactional annotation interceptor

Implement Unit and Integration test for implicit transaction. Next step is
to work on code generation to support transaction.

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-50 - Allow In-Memory transaction capabilities for Smart CMS DTOs
Add System Property support to override workspace id

The following 2 system properties are added to allow to override
workspace namespace and name at runtime.
com.smartitengineering.cms.repo.workspace.namespace
com.smartitengineering.cms.repo.workspace.name

If they are not provided then workspace configured during code
generation would be set by default.

Signed-off-by: Imran M Yousuf <imyousuf@smitsol.com>
Issue #SMARTCMS-56 - Workspace ID must be overrideable