1
22
23 package com.liferay.portal.dao.shard;
24
25 import com.liferay.portal.util.PropsValues;
26
27 import java.util.Map;
28
29 import org.hibernate.SessionFactory;
30
31 import org.springframework.aop.TargetSource;
32
33
39 public class ShardSessionFactoryTargetSource implements TargetSource {
40
41 public SessionFactory getSessionFactory() {
42 return _sessionFactoryThreadLocal.get();
43 }
44
45 public Object getTarget() throws Exception {
46 return getSessionFactory();
47 }
48
49 public Class<?> getTargetClass() {
50 return _sessionFactories.get(PropsValues.SHARD_DEFAULT_NAME).getClass();
51 }
52
53 public boolean isStatic() {
54 return false;
55 }
56
57 public void releaseTarget(Object target) throws Exception {
58 }
59
60 public void setSessionFactory(String shardName) {
61 _sessionFactoryThreadLocal.set(_sessionFactories.get(shardName));
62 }
63
64 public void setSessionFactories(
65 Map<String, SessionFactory> sessionFactories) {
66
67 _sessionFactories = sessionFactories;
68 }
69
70 private static Map<String, SessionFactory> _sessionFactories;
71
72 private static ThreadLocal<SessionFactory> _sessionFactoryThreadLocal =
73 new ThreadLocal<SessionFactory>() {
74
75 protected SessionFactory initialValue() {
76 return _sessionFactories.get(PropsValues.SHARD_DEFAULT_NAME);
77 }
78
79 };
80
81 }