Skip to content

Commit 0e71ad5

Browse files
feat: Implement CloneableThreadLocalObject in AccountSessionHolder for enhanced cloning capabilities
Signed-off-by: Mario Serrano <[email protected]>
1 parent 152fd0f commit 0e71ad5

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

sources/core/src/main/java/tools/dynamia/modules/saas/AccountSessionHolder.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
import org.springframework.web.context.request.RequestAttributes;
2424
import org.springframework.web.context.request.RequestContextHolder;
2525
import tools.dynamia.domain.util.DomainUtils;
26+
import tools.dynamia.integration.CloneableThreadLocalObject;
2627
import tools.dynamia.integration.Containers;
28+
import tools.dynamia.integration.ThreadLocalObjectContainer;
2729
import tools.dynamia.integration.sterotypes.Component;
2830
import tools.dynamia.modules.saas.api.AccountException;
2931
import tools.dynamia.modules.saas.api.dto.AccountDTO;
@@ -39,7 +41,7 @@
3941
*/
4042
@Component("accountSessionHolder")
4143
@SessionScope
42-
public class AccountSessionHolder implements Serializable {
44+
public class AccountSessionHolder implements Serializable, CloneableThreadLocalObject {
4345

4446

4547
@JsonIgnore
@@ -61,7 +63,7 @@ public AccountSessionHolder(AccountService service) {
6163
public static AccountSessionHolder get() {
6264
AccountSessionHolder accountSessionHolder = null;
6365
try {
64-
accountSessionHolder = Containers.get().findObject(AccountSessionHolder.class);
66+
accountSessionHolder = ThreadLocalObjectContainer.getObject(AccountSessionHolder.class);
6567
} catch (Exception e) {
6668
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
6769
if (attributes != null) {
@@ -140,4 +142,15 @@ public ZoneId getAccountTimeZone() {
140142
}
141143
return accountTimeZone;
142144
}
145+
146+
public AccountSessionHolder clone() {
147+
AccountSessionHolder accountSessionHolder = new AccountSessionHolder(service);
148+
accountSessionHolder.currentId = this.currentId;
149+
accountSessionHolder.accountLocale = this.accountLocale;
150+
accountSessionHolder.accountTimeZone = this.accountTimeZone;
151+
accountSessionHolder.currentDTO = this.currentDTO;
152+
return accountSessionHolder;
153+
}
154+
155+
143156
}

0 commit comments

Comments
 (0)