1
22
23 package com.liferay.portal.security.permission;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.model.User;
28 import com.liferay.portal.security.auth.PrincipalThreadLocal;
29 import com.liferay.portal.service.UserLocalServiceUtil;
30
31
36 public abstract class DoAsUserThread extends Thread {
37
38 public DoAsUserThread(long userId) {
39 _userId = userId;
40 }
41
42 public boolean isSuccess() {
43 return _success;
44 }
45
46 public void run() {
47 PermissionChecker permissionChecker = null;
48
49 try {
50 PrincipalThreadLocal.setName(_userId);
51
52 User user = UserLocalServiceUtil.getUserById(_userId);
53
54 permissionChecker = PermissionCheckerFactory.create(user, true);
55
56 PermissionThreadLocal.setPermissionChecker(permissionChecker);
57
58 doRun();
59
60 _success = true;
61 }
62 catch (Exception e) {
63 _log.error(e, e);
64 }
65 finally {
66 if (permissionChecker != null) {
67 try {
68 PermissionCheckerFactory.recycle(permissionChecker);
69 }
70 catch (Exception e) {
71 _log.error(e, e);
72 }
73 }
74 }
75 }
76
77 protected abstract void doRun() throws Exception;
78
79 private static Log _log = LogFactoryUtil.getLog(DoAsUserThread.class);
80
81 private long _userId;
82 private boolean _success;
83
84 }